gpt4 book ai didi

c - 指针未以所需方式打印

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:17 24 4
gpt4 key购买 nike

这是一个C代码

int (*a)[3];                                                        

a 是指向 3 个整数数组的指针

a=(int (*)[3])malloc(sizeof(int)*3);                                

注意这里使用的 Typecast;元素的数量必须在显示的类型转换中指定。此外,* 两边的括号是必需的。

printf("brrbrrbrr  %d  %d  %d %d\n",&a,a,a+1,a+2);

*(a+0)[0]=40;
*(a+0)[1]=41;
*(a+0)[2]=42;
printf("noobnoob %d %d %d \n",a[0][0],*(a+0)[1],(*(*(a+0)+2)));

输出是:

brrbrrbrr  -7077000  29278656  29278668 29278680
noobnoob 40 41 0

我不明白为什么最后一个数字是 0 而不是 42?

最佳答案

索引比取消引用指针具有更高的优先级。你的任务不做你想做的。它们的评估方式如下:

*((a+0)[0])=40;
*((a+0)[1])=41;
*((a+0)[2])=42;

如果你想保留你的语法,你应该使用像这样的括号:

(*(a+0))[0] = 40;
(*(a+0))[1] = 41;
(*(a+0))[2] = 42;

这同样适用于打印数组的第二个元素。 *(a+0)[1] 应为 (*(a+0))[1]

关于c - 指针未以所需方式打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554929/

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