gpt4 book ai didi

c - 关于输出的解释

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:15 27 4
gpt4 key购买 nike

谁能给我解释输出结果

#include<stdio.h>
int main(void){
int i;
char *a[]={ "This is first line",
"This is second line",
"This is third line",
"This is fourth line",
"This is fifth line",
"This is sixth line",
"This is seventh line end"};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(*a[0]));
for(i=0;i<=sizeof(a[0]);i++){
printf("%s\n",a[i]);
}
}

输出:

28
1
This is first line
This is second line
This is third line
This is fourth line
This is fifth line

最佳答案

输出:

28

a是一个包含 7 个指针的数组;每个指针在您的系统上的大小为 4。因此 28。

1

*aa[0]相同, 所以 a[0][0] , *a[0] , **a(*a)[0]都是等价的:都是第一个字符串的第一个字符。

在那之后,你应该得到七行。

This is first line
This is second line
This is third line
This is fourth line
This is fifth line

等等,什么?嗯……

for(i=0;i<=sizeof(a[0]);i++){

对我来说似乎完全错了:

for(i=0;i<sizeof(a)/sizeof(a[0]);i++){

应该会更好。为什么? i<=sizeof(a[0])i<=4 , 给出 5 行。

然而,i<sizeof(a)/sizeof(a[0]);i < 28/4 , 即 7,数组中元素的数量。

关于c - 关于输出的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com