gpt4 book ai didi

c结构问题

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

#include <stdio.h>
struct audiocd {
char title[256];
int trackNo;
char type;
char publisher[256];
};
int main() {
struct audiocd* cdptr;
struct audiocd cdarray[4];
cdptr = cdarray;

printf("%d\n", &(cdarray[2]));
printf("%d\n", cdptr);
}

什么是cdarray[2] & cdptr

编辑:谢谢,但是如果 printf("%d\n", &cdarray)4291520 ,是否可以跟踪 printf("%d\n", &(cdarray[2])) & printf("%d\n", cdptr)?

最佳答案

程序的整体效果简直就是未定义的行为。它将地址传递给 printf,但使用 %d 转换,它需要一个 int。不匹配会导致未定义的行为。

在典型情况下,int 和指针恰好大小相同,它会打印出 cdptr 中的地址和 cdarray[2] 中的地址.

如果你想打印出这些地址,显而易见的方法是这样的:

printf("%p", (void *)&cdarray[2]); // (void *)cdarray+2
printf("%p", (void *)cdptr);

至于那些表达式“是什么”,它们是地址——分别是数组开头和数组第三个元素的地址。

关于c结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240677/

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