编了个结构体数组做参数的程序,结果在对结构体数组的字符串变量做初始化的时候出了问题,这个字符串不能使用数组来初始化话,要不然是会出错的,只能使用指针来进行初始化。
程序如下:
-
/*结构体数组或指针做参数--地址传递*/
-
#include <stdio.h>
-
#include <string.h>
-
-
struct student
-
{
-
char *Num;
-
int nu;
-
};
-
-
int putout(struct student s[])
-
{
-
int i;
-
for(i = 0; i < 3; i++)
-
{
-
printf("%s\n",s[i].Num);
-
}
-
}
-
-
-
int main()
-
{
-
-
struct student stu[3];
-
-
stu[0].Num = "zhangsan"; //char型数组得这样初始化
-
stu[1].Num = "lisi"; ///////????为什么使用数组回出错????? stu[1].Num[10] = "zhangsan";
-
stu[2].Num = "wangwu";
-
-
printf("%s\n",stu[0].Num);
-
-
putout(stu);
-
-
}
按理说定义一个数组,并且使用这种形式
stu[1].Num[10] = "zhangsan";来初始化应该是没有什么问题的,但是老是打印乱码,为此我特意编写了一个小程序来做测试。终于找到问题了,其实是一个细节的问题,其实stu[1].Num[10] = "zhangsan";这句根本不是定义的时候初始化,其定义在结构体中就定义好了,所以字符数组是不能这么直接赋值的,而下边这个小程序是定义的一开始就进行了初始化,所以是没有什么问题的,如下:
-
#include <stdio.h>
-
#include <string.h>
-
-
int main()
-
{
-
char Num[10] = "zhousan";
-
printf("%s\n",Num);
-
return 0;
-
}
程序正常打印,是没有什么问题的。。。。。
阅读(3768) | 评论(0) | 转发(0) |