(2) 你这里是主程序申请了一个结构体指针变量Li,然后在函数CreateList() 中修改这个指针变量的值,肯定需要传入这个变量的地址,因此函数形参就变成了seqList **L (可以理解为指针的地址),不然如果是seqList *L的话,函数内部只是修改了局部变量L的值,对主函数中的Li无影响;你在看一下函数形参传值和传地址的区别就明白了
BC
=左边必须是左值(可以被赋值的值,也被称作变量表达式,变量、数组表达式、指针表达式的值都是左值。但是算数、逻辑运算表达式、函数表达式的值不是左值所以不能被赋值)所以A、D错误
C是逗号表达式。(逗号表达式的值和类型都由逗号右边的表达式决定,就是说连续逗号表达式比如a,b,c,d等价于a,(b,(c,(d)))
-
赋值仅仅是一种表达式,也有值和类型a
=
1。的值是1类型是int,所以完全可以赋值给另一个int类型变量b
=
(a
=
1)也就是b
=
a
=
1。不存在不可以连续赋值的说法。
括号表达式也是一样。只要有类型和值就能赋值给对应的变量这是赋值的原则。
B和C的写法在标准C编译器上都是可以编译通过的。