#include "stdafx.h"
//同类结构体,可以赋值
typedef struct arr
{
int array[10];
}ARRAY;
int _tmain(int argc, _TCHAR* argv[])
{
int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, };
//int arrayCpy[10] = array;
//同类型的数组不能直接赋值 因为数组名字为指针类型
//进行指针的赋值没意义
//利用结构体实现数组之间的赋值
ARRAY a = { { 1, 2, 3, 4, 5, 6, 7, 8 } };
ARRAY aCpy = a;
for (int i = 0; i<sizeof(a.array) / sizeof(a.array[0]); i++)
{
printf("%d\n", aCpy.array[i]); //后面俩0是因为没有定义
}
return 0;
}
结构体类型的数组
#include "stdafx.h"
#include <string.h>
typedef struct stu
{
char name[50];
char sex;
int age;
float score;
}Stu;
int _tmain(int argc, _TCHAR* argv[])
{
Stu array[5] =
{
{"bob",'x',18,90},
{"jim",'y',23,78},
{"hanmeimei",'o',16,59},
{"xiaoming",'j',22,90},
{"wangmeng",'b',12,2}
};
//array[0] = { "bob", 'x', 18, 90 };
//不能这样赋值 因为数组中的内容为结构体类型,
//为构造类型的数据不能在创建之后进行赋值初始化(现在的C++版本支持这样赋值)
//可以将具体数值逐一初始化 或者 更改数据
strcpy(array[0].name, "bob");
//bob为字符串类型 需要用strcpy拷贝赋值
array[0].sex = 'x';
array[0].age = 23;
array[0].score = 34.5;
for (int i = 0; i < 5; i++)
{
printf("name=%10s\t", array[i].name);
printf("sex=%2c\t", array[i].sex);
printf("age=%2d\t", array[i].age);
printf("score=%.2f\n", array[i].score);
}
return 0;
}