作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
char contents[8][2]={"1","2","3","4","5","6","7","8"};
char* contentsx[8]={"1","2","3","4","5","6","7","8"};
printf("Contents: %s\n", contents[1]);
printf("Contents: %s\n", &contents[1]);
printf("Contentsx: %s\n", contentsx[1]);
printf("Contentsx: %s\n", &contentsx[1]);
打印:
Contents: 2
Contents: 2
Contentsx:2
Contentsx: //prints nothing or some garbage character
问题是,为什么contents[1]是元素1的值,与 &contents[1] 打印相同的结果,即元素 1 的地址在这种情况下,为什么 contentsx[1] 的值不同于&contentsx[1](有一些未定义的行为)
最佳答案
这是因为 contents
是一个数组的数组。
contents[1]
表示此数组中的第二个数组。因此,它的名称衰减为指向其第一个元素的指针,其大小为 1。然而,&contents[1]
指向整个数组,大小为 2。
xcontents[1]
是一个 char *
,指向给定字符串的确切位置。 &xcontents[1]
是一个指向条目的 char **
,在本例中是一个 char *
。
关于C 编程 - 字符数组与字符串数组寻址消歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930833/
我是一名优秀的程序员,十分优秀!