目录
4、将字符串一次性地赋值(可以指明数组长度,也可以不指明):
为了严谨:建议初始化一定要赋值。
1、const作用:
#define MONTHS 12
int days[MONTHS] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
#define MONTHS 12
const int days[MONTHS] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
const定义变量,它的值不能被改变,在整个作用域中都保持固定。
2、当{ }中值的个数少于元素个数时:
当可以只给部分元素赋值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:
int a[10]={12, 19, 22 , 993, 344};
表示只给 a[0]~a[4] 5 个元素赋值,而后面 5 个元素自动初始化为 0。
当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0:
对于 short、 int、 long,就是整数 0;
对于 char,就是字符 '\0';
对于 float、 double,就是小数 0.0。
3、二维数组的两种赋值方式:
int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };
int a[5][3]={80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};
4、将字符串一次性地赋值(可以指明数组长度,也可以不指明):
1. char str[30] = { "c.biancheng.net" };
2. char str[30] = "c.biancheng.net"; //这种形式更加简洁,实际开发中常用
3. char str[] = "c.biancheng.net"; //这种形式更加简洁,实际开发中常用
5、字符数组中的'\0':
在 C 语言中,字符串总是以'\0'作为结尾,所以'\0'也被称为字符串结束标志,或者字符串结束符
'\0'是 ASCII 码表中的第 0 个字符,英文称为 NUL,中文称为“空字符”。该字符既不能显示,也没有控制功能,输出该字符不会有任何效果,它在 C 语言中唯一的作用就是作为字符串结束标志。
由" "包围的字符串会自动在末尾添加'\0'。
当用字符数组存储字符串时,要特别注意'\0',要为'\0'留个位置;这意味着,字符数组的长度至少要比字符串的长度大 1。
char str[8] = "abc 123";
"abc 123"看起来只包含了 6 个字符,我们却将 str 的长度定义为 8,就是为了能够容纳最后的'\0'和空格。
注意:字符串长度,就是字符串包含了多少个字符(不包括最后的结束符'\0')。例如"abc"的长度是 3,而不是 4。
注意:输出字符串时只需要给出名字,不能带后边的[ ]。
char str[] = "http://c.biancheng.net";
printf("%s\n", str); //通过字符串名字输出
printf("%s\n", "http://c.biancheng.net"); //直接输出
puts(str); //通过字符串名字输出
puts("http://c.biancheng.net"); //直接输出
就目前学到的知识而言, int、 char、 float 等类型的变量用于 scanf() 时都要在前面添加&,而数组或者字符串用于scanf() 时不用添加&,它们本身就会转换为地址。读者一定要谨记这一点。
6、花式初始化赋值:
#define MONTHS 12
const int days[MONTHS] = { 31, 28, [4] = 31, 30, 31, 30, [1] = 29 };
等于
const int days[MONTHS] = { 31, 29, 0, 0, 31, 30, 31, 0, 0, 0, 0, 0 };
7、计算元素个数:
在程序中想知道数组单元个数可以使用 sizeof(a) / sizeof(a[0]), sizeof(a) 是得到数组 a 的大小,sizeof(a[0]) 是得到数组 a 中单个元素的大小(因此可以不必要是a[0],a[i]都行)。
int Quantity (void)
{
int a[]={1,2,3,4,5};
int b;
b=sizeof(a)/sizeof(a[0]);
printf("数组元素个数为:%d",b);
return b;
}