【发布时间】:2019-01-25 17:22:57
【问题描述】:
- 定义了一个包含一个变量的结构。长度为 51。
- 为此分配 4 个内存块。并听取用户的意见。
- 使用变量的地址打印输出。
-
两个地址相差33,不是51吗?
NULL_NAME = 51 /*Define structure to hold players name.*/ typedef struct{ char name [NULL_NAME]; } player; players=(player*) malloc(4*sizeof(player)); for(int i=0;i<4;i++){ scanf("%s",p[i].name); } for(int j=0;j<4;j++){ printf("%s \n",players[j].name); printf("%p \n",&players[j].name); }
输出:-
海合会: gcc --版本 gcc (Debian 6.3.0-12) 6.3.0 20170406 版权所有 (C) 2016 Free Software Foundation, Inc. 这是免费软件;请参阅复制条件的来源。没有 保修单;甚至不是为了适销性或特定用途的适用性。
【问题讨论】:
-
请正确格式化您的代码并发布一个可以编译的真实程序
-
请格式化您的帖子并包含一个可读的minimal reproducible example
-
提示:十六进制的 33 是什么,转换为十进制?
-
33 十六进制 = 3×16+3 = 51
标签: c memory-management dynamic-memory-allocation memory-address