【发布时间】:2016-06-20 18:27:35
【问题描述】:
我试图打印一个结构的 int 变量的值,但它却打印出地址。不知道为什么,代码如下:
struct data{
char name[20];
int age[100];
};
typedef struct data dataobj;
int main() {
dataobj element;
printf("enter a name:\n");
gets(element.name);
printf("name is: %s\n",element.name);
printf("enter a number:\n");
scanf("%d",&element.age);
printf("number is: %d",element.age);
return 0;
}
在这里输出:
enter a name:
John
name is: John
enter a number:
30
number is: 6356352
Process returned 0 (0x0) execution time : 7.278 s
Press any key to continue.
你可以看到它没有像我想要的那样打印 30,而是打印 6356352(应该是 element.age var 的地址)
【问题讨论】:
-
一个20字100岁的名字?
-
是的,这是一个测试,忘记更改大小
-
要将值读入数组的哪个元素?
-
您可能想将结构中的年龄更改为
int age,为什么要将它作为一个数组? -
注意:永远不要使用
gets!出于安全原因,它已从标准中删除。符合标准的实现应该警告缺少原型。在stdin上使用fgets。