读书人

多维数组的一个有关问题

发布时间: 2012-11-03 10:57:44 作者: rapoo

多维数组的一个问题
有个问题想不明白,希望给予解决,谢谢。
发现如下:
char a[][10] = {"hello","world","thanks"};
printf("%s\n",*(a+1));
printf("%s\n",a+1);
为什么打印的结果相同呢?
a+1 竟然跟 *(a+1) 表示的意思相同?
为什么?

[解决办法]
a+1和a[1]值是一样的
他们的区别是数据类型不一样
表达式a+1的数据类型是int*
表达式*(a+1)的数据类型是int[10]

值是一样的 然后printf函数的%s 是将后面的数据当初一个char*处理的
只要值是一个字符串首 就能正确输出了

printf("%u %u\n", sizeof(a+1), sizeof(*(a+1)));
这个能看出他们的不同之处
[解决办法]
C语言里面说了,
两个代表的意思不一样,
但指的地址一样,
只需理解为,
一个为行指针,一个为列指针,就行了

读书人网 >C语言

热点推荐