请问一下 关于C语言的"引用"的疑问

请教一下 关于C语言的"引用"的疑问
struct List { int length; };

void clear(List list){
list.length = 0;
}

int main(){
        printf("The list length is %d.\n", list.length);    /// 2
clear(list);
printf("The list length is %d.\n", list.length);   ///  2
        return 1;
}

为什么上面,结构体变量,不是引用么?为什么不会改变值本身呢? 我知道用使用指针可以改变。但是想请教上面这个现象是为什么?这是不是引用么?
c语言 指针 结构

------解决方案--------------------
C语言里面没有引用的概念,C++里面才有。你的这种情况,编译器是通过在寄存器或者堆栈中建立临时数据来传递它的,但是说到底也是传值。(参考这个:http://blog.chinaunix.net/uid-11238496-id-2894352.html)
如果你希望改变结构体的值,在C下面只能传它的指针进去(引用在某种意义上其实就是一个指针常量,即指针自身的值不能改变,但是指向的内容可以改变)

void clear(List *plist){
plist->length = 0;
}