C语言学习--结构体数据类型
只有当定义了结构体变量的时候才会分配内存空间, 比喻说
struc stu
{
int id;
int age;
char name[28];
}
struct stu d;
这个时候才会分配内存空间
(1) 定义结构体类型, 以及初始化结构体变量
#include<stdio.h> //关键字 struct 代表的是一个结构体类型 //stu 是这个结构体的名字, //结构体类型struct stu {}中 是结构体的成员, 每个成员的类型可以湿任意类型 //注意这里只是一种类型, 是定义的好, 没有内存空间, 不可以给结构体成员赋值 struct stu { int id ; int age; char name[28]; }a,b;// 定义类型时候, 定义了两个结构体变量, 这个时候a, b 就有了内存空间 struct stu d; // 可以这样定义结构体变量struct stu d; int main (void) { return 0; }
#include<stdio.h> #include<stdlib.h> //关键字 struct 代表的是一个结构体类型 //stu 是这个结构体的名字, //结构体类型struct stu {}中 是结构体的成员, 每个成员的类型可以湿任意类型 //注意这里只是一种类型, 是定义的好, 没有内存空间, 不可以给结构体成员赋值 struct stu { int id ; int age; char name[28]; };// 定义类型时候, 定义了两个结构体变量, 这个时候a, b 就有了内存空间 int main (void) { struct stu d = {1,10,"shun"}; // 可以这样定义结构体变量struct stu d;斌进行初始化 //struct stu f = {.age=10}; 给部分成员初始化, 其他元素为0 printf("%d, %d, %s",d.id, d.age, d.name); return 0; }
#include<stdio.h> #include<stdlib.h> //关键字 struct 代表的是一个结构体类型 //stu 是这个结构体的名字, //结构体类型struct stu {}中 是结构体的成员, 每个成员的类型可以湿任意类型 //注意这里只是一种类型, 是定义的好, 没有内存空间, 不可以给结构体成员赋值 struct stu { int id ; int age; char name[28]; };// 定义类型时候, 定义了两个结构体变量, 这个时候a, b 就有了内存空间 int main (void) { struct stu d; //如果给结构体成员赋值 //通过结构体变量来赋值, 这个时候就需要使用.域的格式 d.id = 2; d.age = 1; //d.name = "shun";这种方式是不行的, 因为name是数组, 数组的变量名字是一个常量(数组的地址常量) strcpy(d.name, "shun"); printf("%d, %d, %s",d.id, d.age, d.name); return 0; }
#include<stdio.h> #include<stdlib.h> //关键字 struct 代表的是一个结构体类型 //stu 是这个结构体的名字, //结构体类型struct stu {}中 是结构体的成员, 每个成员的类型可以湿任意类型 //注意这里只是一种类型, 是定义的好, 没有内存空间, 不可以给结构体成员赋值 struct stu { int id ; int age; char name[28]; };// 定义类型时候, 定义了两个结构体变量, 这个时候a, b 就有了内存空间 int main (void) { struct stu d; //如果给结构体成员赋值 //如果通过结构体的地址操作结构体成员, 使用-> (&d) -> id = 10; (&d) -> age = 100; strcpy((&d) -> name , "shun"); printf("%d, %d, %s",d.id, d.age, d.name); return 0; }