首页 热点资讯 义务教育 高等教育 出国留学 考研考公

C语言关于数组地址的问题

发布网友 发布时间:2022-04-26 17:38

我来回答

4个回答

热心网友 时间:2023-10-18 02:15

这里二者等效,都是字符数组的地址。

首先,weekday[7] [10] 是二维数组,
而printf("%s\n",weekday[1])表示输出的是第二行所有数组元素,相当于把weekday[1]是一个一维数组的数组名,传输的是一个地址,然后全部输出这一行的元素。这个效果和printf("%s\n",&weekday[1])是一样的,所以干脆不写&。

热心网友 时间:2023-10-18 02:15

二维数组两种写法是等价的了。如果换成一维数组试试,肯定会出错的。

热心网友 时间:2023-10-18 02:16

严格来说,printf("%s\n",&weekday[1]); 这是错误的
char weekday[7][10]; 是二维数组,weekday是数组首地址
weekday[x]是第x+1行的地址(x=0...6)
char *p;
p=weekday[x] ; //是一维地址,可以进行赋值操作
&weekday[x] 相当于 &p, 是个二维指针值,所以p=&weekday[x] ;是错误的赋值。

但数组有一个特点,char a[10] ; a与&a的值是相同的!所以,在printf("%s", xxx ) ;//这里xxx只要是个有效的地址值,就会正确输出地址中的字符串。

热心网友 时间:2023-10-18 02:16

printf("%s",字符串地址); 字符串的输出需要字符串的首地址 每个字符串都有结束标志 '\0' C语言只要知道首地址,然后读取一直到'\0' 就结束了
char weekday[7][10] = {"a","b" ...}
weekday 是个字符二维数组 其中 "a" 字符串 其实是有 'a' '\0' 组成的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com