类型说明符 数组名[常量表达式];
如定义一个5个元素的数组
int a[5];
数组初始化:
int a[5] = {1,2,3,4,5};
数组初始化和输出
# include <stdio.h>
int main(){
int a[5]={1,2,3,4,5};
int i;
for (i=0;i<5;i++){
printf("%d\n",a[i]);
}
}
结构体是C语言中的一种复合数据类型。结构体的定义:
struct 结构体标签 {
数据类型 成员1;
数据类型 成员2;
·
·
·
};
例:
struct Student { //定义结构体
int id;
char name[10];
float score;
};
int main(){
struct Student student1; //声明一个Student类型的变量student1;
return 0;
}
访问结构体成员:
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char name[50];
float score;
};
int main() {
struct Student student1;
// 为成员赋值
student1.id = 1001;
strcpy(student1.name, "张三"); // 注意:数组不能直接赋值,要用strcpy
student1.score = 90.5;
// 读取并打印成员的值
printf("学号: %d\n", student1.id);
printf("姓名: %s\n", student1.name);
printf("成绩: %.1f\n", student1.score);
return 0;
}
初始化结构体:
struct Student {
int id;
char name[50];
float score;
};
int main() {
// 按成员定义的顺序初始化
struct Student student1 = {1001, "张三", 90.5};
// 指定成员初始化(C99标准支持)
struct Student student2 = {
.id = 1002,
.score = 85.0,
.name = "李四"
}; // 顺序可以打乱
return 0;
}
结构体指针:
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[50];
float score;
};
int main() {
struct Student student1 = {1001, "王五", 88.5};
struct Student *ptr; // 声明一个指向Student结构体的指针
ptr = &student1; // 让指针指向student1
// 通过指针访问成员(使用 -> 运算符)
printf("学号: %d\n", ptr->id);
printf("姓名: %s\n", ptr->name);
printf("成绩: %.1f\n", ptr->score);
// 等价于 (*ptr).id
printf("学号: %d\n", (*ptr).id); // 不常用,写法繁琐
return 0;
}
typedef简化结构体类型名:
// 定义结构体并使用typedef创建别名
typedef struct {
int id;
char name[50];
float score;
} Student; // 现在Student就是一个类型名了
int main() {
Student student1; // 无需再写struct关键字
student1.id = 1001;
// ... 其他操作
return 0;
}