- 课程名称:嵌入式工程师
- 学习章节:数组的初始化
- 学习链接:https://class.imooc.com/sc/148/learn
- 讲师姓名:大白老师
课程内容:
数据的初始化
含义
在定义数组的同时,给数组中的每一个成员变量,赋予一个初始的值.
初始化
完全初始化
示例
int a[5] = {10,20,30,40,50};
示例含义
a[0] = 10, a[1] = 20, a[2] = 30,a[3] = 40,a[4] = 50
部分初始化
示例
int a[5] = {10,20,30};
实例含义
部分初始化:未初始化的值,系统默认为0.
a[0] = 10, a[1] = 20, a[2] = 30,a[3] = 0,a[4] = 0
错误写法
int a[5] = 1,2,3,4,5; //error
无大括号
int a[5]; //a[0]~a[4]
a[5] = {1,2,3,4,5}; //error
一定要在声明类型的同时给他赋值
int m = 5;
int a[m]; //error
元素个数不是常量
个别情况
示例
省略元素的个数,根据初始化的个数分配内存空间
int a[] = {10,20,30,40,50,60,70};
int len = sizeof(a)/sizeof(a[0]);
//a[0] = 10 a[1] = 20 … a[6] = 70;
特点
系统会根据用户初始化的元素个数来分配对应的内存空间。
常见错误
//int a[7]; //true
//int a[]; //error
//int a[] = {}; //error
//int a[] = {5}; //true ,只有一个元素 a[0]
字符数组和字符串
字符数组定义
它是一个char/unsigned char类型的数组,常用来存放字符或字符串。
存放形式
存放字符
char buf[5] = {‘A’,‘B’,‘C’,‘D’,‘E’};
字符数组除了存放字符和字符串还可以存放整数
char buf[5] = {65,66,67,68,69}; //true;
存放字符串的三种写法
char buf[30] = “welcome”;
char buf[30] = {“welcome”};
char buf[30] = {‘w’,‘e’,‘l’,‘c’,‘o’,‘m’,‘e’,’\0’};
单字符储存后面会有个’\0’
字符串的输入和输出
输入
char buf[100] = {0};
scanf("%s",字符数组的首地址); //scanf("%s",buf);
功能:用户从键盘输入任意一段字符串,存放到buf中。以回车,空格,tab键盘作为用户输入的结束符号。
输出
char buf[] = {“hello world”};
printf("%s\n",字符数组的首地址); //printf("%s\n",a);
功能: 输出数组中第一个’\0’之前所有的字符,并显示到屏幕上。
若是用户对应字符数组中没有’\0’,则用户输出乱码.
学习收获:
通过本章学到了 数组没有赋值的默认会为0,然后还有字符数组和字符串有差别
相同的数据,字符会有一个默认的’\0’
截图打卡: