数组和逗号表达式

来源:互联网 发布:淘宝怎样发布宝贝 编辑:程序博客网 时间:2024/04/28 10:15

注意数组里面的花括号{ },小括号 ( )和逗号

逗号表达式的值是:先计算前面的表达式,后计算后面的表达式。

表达式最终的值最后一个表达式的值。

举例1:

int main(){int a[3][2]={{0,1},(2,3),(4,5)};int *p;p=a[1];printf("%d\n",p[0]);//3printf("%d\n",p[1]);//5printf("%d\n",a[0][0]);//0printf("%d\n",a[0][1]);//1printf("%d\n",a[1][0]);//3printf("%d\n",a[1][1]);//5system("pause");return 0;}

定义了一个二维数组,3行2列,但是注意定义的里面有逗号和().

1) 用括号{ }括起来的表示一组(行)元素,如上面的a[0]={0,1}是数组a的第0行元素

2) 而用小括号( )括起来的是逗号表达式逗号表达式的取值最后一个元素的值,计算后的最终值是一个元素。

    所以(2,3)的值是3,a[1][0]=3;(4,5)的值是5,a[1][1]=5.后面没有列出的元素默认是0.

    所以整个数组完整表达出来是:

int a[3][2]={{0,1},{3,5}};

默认的a[2][0]=0,a[2][1]=0

3)想起链表了,用结构体数组初始化链表的时候,因为后面有一个next指针,所以定义结构体数组的时候都是:

P a[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}}; //注意大括号里还有大括号,P是结构体类型

举例2:

将二维数组第一行的元素也改成逗号表达式

int main(){int a[3][2] = {(0,1),(2,3),(4,5)};int *p;p = a[0];printf("%d\t",p[0]);//1printf("%d\t",p[1]);//3printf("%d\n",p[2]);//5printf("%d\t",a[0][0]);//1printf("%d\n",a[0][1]);//3printf("%d\t",a[1][0]);//5printf("%d\n",a[1][1]);//0printf("%d\t",a[2][0]);//0printf("%d\n",a[2][1]);//0system("pause");return 0;}

此刻a={1,3,5};后续的元素默认都是0.

0 0
原创粉丝点击