C语言结构体中gets运用问题
#include <stdio.h>#include <stdlib.h>
#define M 2
struct person
{
char name;
char phone;
};
void main()
{
struct person man;
int i;
for(i=0; i<M ; i++)
{
printf("input name:\n");//为什么同样取的是同一个一维数组 两次输入之后值不会被覆盖?
gets(man.name);
printf("input phone:\n");
gets(man.phone);//为什么同样取的是同一个一维数组 两次输入之后值不会被覆盖?
}
printf("\tname\t\t\tphone\n\n");
for(i=0;i<M;i++)
{
printf("%20s\t\t\t%20s\n",man.name,man.phone);
}
}
还有man.name这里i++ 是指向的哪里? {:10_266:}{:10_266:}{:10_266:}{:10_266:} for 第一次循环时
i = 0
执行的是
printf("input name:\n");
gets(man[0].name);
printf("input phone:\n");
gets(man[0].phone);
for 第二次循环时
i = 1
执行的是
printf("input name:\n");
gets(man[1].name);
printf("input phone:\n");
gets(man[1].phone);
因为 M 定义为2,所以 for 循环结束
人造人 发表于 2016-1-18 23:24
for 第一次循环时
i = 0
这个man.name对应的不是开始定义的char name吗?
如果是这样的话 第二次循环的时候指向的是name的话 之前输入的字符不就被第二次覆盖了吗? Arkina 发表于 2016-1-18 23:31
这个man.name对应的不是开始定义的char name吗?
如果是这样的话 第二次循环的时候指向的是name
第二次循环的时候指向的是name,为什么会覆盖之前输入的字符?
之前是 name , 现在是 name 人造人 发表于 2016-1-18 23:48
第二次循环的时候指向的是name,为什么会覆盖之前输入的字符?
之前是 name , 现在是 name
{:10_267:}但他是字符串啊。。char name一个位置就能放下一个字符串吗? Arkina 发表于 2016-1-18 23:54
但他是字符串啊。。char name一个位置就能放下一个字符串吗?
struct person
{
char name;
char phone;
};
struct person man;
这回呢 人造人 发表于 2016-1-18 23:59
struct person
{
char name;
{:10_247:}是这里结构定义了的man是分别 man和man的意思吗? 然后分别指向一个char型的10个大小的数组? 是这个意思吗? Arkina 发表于 2016-1-19 00:06
是这里结构定义了的man是分别 man和man的意思吗? 然后分别指向一个char型的10个大小 ...
恩,所以不会覆盖 人造人 发表于 2016-1-19 00:14
恩,所以不会覆盖
{:10_266:}谢谢大神 终于搞明白了 是我之前一直理解错了钻了牛角尖
页:
[1]