gpt4 book ai didi

c - C程序中的数组指针

转载 作者:行者123 更新时间:2023-12-04 15:29:09 27 4
gpt4 key购买 nike

这是教科书中的一个C程序,它向用户请求一个3*5的二维数组并打印第三行。

我对 int* p[5] 感到困惑。这里为什么要有[5],我觉得int* p就可以了。它可以重复添加并指向int数组中的下一个内存空间。谁能解释一下指针在这个程序中是如何工作的?

#include <stdio.h>

int main(void){
int a[3][5];
int i,j;
int *p[5];

p = &a[0];
printf("Please input:\n");
for(i = 0; i < 3; i++){
for(j = 0; j<5;j++){
scanf("%d\n",(*(p+i))+j);
}
}
p = &a[2];
printf("the third line is:\n");
for(j = 0; j<5; j++){
printf("%5d", *((*p)+j));
}
printf("\n");
}

最佳答案

int *p[5];

是一个包含五个指向 int 的指针的数组。

你想要的是一个指向五个 int 数组的指针

int (*p)[5];

因为 &a[0]a 的第一个元素的地址,它是一个 int[5]

如果不是错误,编译器至少应该清楚地发出警告。

更多相关信息:C pointer to array/array of pointers disambiguation

关于c - C程序中的数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111523/

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