深入浅出C语言:(一)数组

目录

 

1、const作用:

2、当{ }中值的个数少于元素个数时:

3、二维数组的两种赋值方式:

4、将字符串一次性地赋值(可以指明数组长度,也可以不指明):

5、字符数组中的'\0':

6、花式初始化赋值:

7、计算元素个数:


为了严谨:建议初始化一定要赋值。

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; 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值