最后奉上我该内容的学习总结完整版例子。
#include "stdio.h"
/*
结构体学习1,结构体的定义方式:
struct tag{member1;member2;member3;} variable-list;
或者
struct tag{member1;member2;member3;};
struct variable-list;
或者
struct {member1;member2;member3;} variable-list;
*/
void test1(void)
{
struct tag{int x; int y;}m[9];
for(int i=0;i<9;i++)
{
m[i].x=i+1;
m[i].y=(i+1)*(i+1);
}
for(int i=0;i<9;i++)
{
printf("%d*%d = %d\n",m[i].x,m[i].x,m[i].y);
}
}
void test2(void)
{
struct tag{int x; int y;};
struct tag m[9];
for(int i=0;i<9;i++)
{
m[i].x=i+1;
m[i].y=(i+1)*(i+1);
}
for(int i=0;i<9;i++)
{
printf("%d*%d = %d\n",m[i].x,m[i].x,m[i].y);
}
}
void test3(void)
{
struct {int x; int y;} m[9];
for(int i=0;i<9;i++)
{
m[i].x=i+1;
m[i].y=(i+1)*(i+1);
}
for(int i=0;i<9;i++)
{
printf("%d*%d = %d\n",m[i].x,m[i].x,m[i].y);
}
}
/*
定义新的类型方法
typedef 要被定义的内容 新的类型名
这与#define刚好相反
#define 起个新名字 要被替换的内容
例如
#define PI 3.14
typedef int INTER;
*/
void test4(void)
{
typedef int IN[3];
IN xx={1,2,3};
printf("xx[1]=%d\n",xx[1]);
}
void test5(void)
{
typedef struct stu
{
char *name;
int age;
char sex;
} STU;
//通过typedef给后面的结构体起了个新的名字STU,下面两种创建方式效果是一样。
struct stu b1,b2;
STU b3={"TOM",18,1};
b1=b3;
b2.name="Jack";
b2.age = 14;
b2.sex = 0;
printf("Name:%s \n Age:%d \n SEX:%d\n",b2.name,b2.age,b2.sex);
printf("Name:%s \n Age:%d \n SEX:%d\n",b3.name,b3.age,b3.sex);
}
int main(void)
{
test1();
printf("---------------------------------------------------\n");
test2();
printf("---------------------------------------------------\n");
test3();
printf("---------------------------------------------------\n");
test4();
printf("---------------------------------------------------\n");
test5();
printf("---------------------------------------------------\n");
return 0;
}
|