如何解决C语言中struct类型的内存和地址?
1.背景-
虽然我发现 C 中的内置类型的工作方式类似于结构类型,但我发现了一些不同的东西。
-
不懂汇编语言
// @compiler: gcc
// @machine: x64 Windows
#include <stdio.h>
struct IntNode {
int integer;
struct IntNode * next;
};
int main() {
struct IntNode ints_list = {0,0};
printf("size of IntNode: %d\n",sizeof(struct IntNode));
printf("Address of ints_list : %p\n",ints_list); // 000000000061FE00
printf("Address of &ints_list : %p\n",&ints_list); // 000000000061FE10
printf("Address of &ints_list.integer: %p\n",&ints_list.integer); // 000000000061FE10
printf("Address of &ints_list.next : %p\n",&ints_list.next); // 000000000061FE18
}
3.图片
3.问题
-
为什么 ints_list 能承受那段记忆
-
编译应用程序时ints_list是否在变量表中?
解决方法
ints_list
不是结构的地址,&ints_list
是 - 您的第一个 printf
调用未定义的行为。
structs
可以按值传递,并将一个传递给 printf
(它不知道您的结构应该如何打印)伪装成一个指针会产生垃圾输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。