从C出发 15 --- 数组练习

int n[2] 定义了数组,这个数组有2个元素,每个元素是一个 int 类型的变量

 通过 sizeof 计算数组的大小的方法 : int len  = sizeof(a)/sizeof(*a);

 

 

二维数组本质上就是一维数组,C 语言里面的数组就只有一维数组,那么二维数组就是一个数组的数组,从数学角度来看,二维数组相当于一个矩阵

这个是一个找最值的应用,将小于号,改成大于号就是找最大值了


 

#include <stdio.h>

#define LN 50
#define SN 10

int main()
{
    int light[LN] ={0};
    int student[SN] = {0};
    int i = 0;
    int j = 0;
    
    for(i=0; i< LN;i++)    linght[i]; // 1表示灯开,0表示灯关

    for(i=0; i< SN;i++)    student[i] = (i + 1) * 2; //2, 4 ,6 ,8,...

    for(i=0;i<SN;i++)
        for(j=0;j<LN;j++)
            if(j + 1) % student[i] ==0;
                {
                     light[j] = !light[j];                   
                } 

    for(i=0;i< LN;i++)
        if(light[i])
            printf("%d",i + 1);

}

 字符串字面量肯定是字符串常量

字符串长度就是这个字符串中包含的字符个数,字符串大小就是这个字符串占用的内存空间是多少

只需要保证 S 所对应的字符数组大小超过5,在d的后面还有还有一个元素,所以是5

字符串的赋值用 ctrcpy

既然是字符串的连接,就要保证连接的都是字符串,而这里的 r 仅仅是一个字符数组

int main()
{
    char r[10];   //定义字符数组    // char r[10]= " "; < == > char r[10] = {0};  这个时候的 r 就变成了空字符串
    int i = 0; 
    int e =0;

    for()    
    {
        e = "abcd"[i];     //将字符串常量当成数组来使用
                          //"abcd"是一个字符串常量,其本质是字符数组
                         // 通过方括号加上下标的形式,来访问这个数组里面的元素
                        //将数组里面第 i 号元素赋值给 e 

        printf("%d ", e);  //这个for循环结束后会在屏幕打印5 个整数出来,其中最后一个整数是 0 就是字符串的结尾,就是 0 元素
    }
    
    printf("\n");

    strcat(r,"abcd");   //为了使这个正确,就要将 r[0] = 0;  ==> r 变成了字符串 ,这个字符串里面一个字符都没有,因此就是一个空字符串
    strcat(r,"abcd");

    printf("r = %s\n", r);

    return 0;
}

 

 这里的 r 最多能表示长度为 9 的字符串,因为最后的结束 0 元素也需要占空间的


         A : 因为在C 语言里面 但凡给定了数组大小,就不用理会初始化列标里面有多少值了,编译器会输出前面6 个字符,最后一个 0 元素就被忽略了

B : 这里的第 5 号元素,充当 0 元素

 结论: 对一个数组来说,初始化列标里面多余的值会被忽略掉 

 

 为什么不是 6 ,这个字符串里面出现的都是转义字符

 在 C语言里面 \ 表示转义,会将后面出现的字符转义

 

 

 

 在C 语言里面字符串的结束符,就是第一次出现的0 元素

 

 s 是一个字符数组同时也是一个字符串

#include <stdio.h>
#include <sizeof.h>

int main()
{
    char s[] = "abc\0de\0fg";
    int size = sizeof(s);
    int i = 0;
    int j = 0;

    while(i < size)
    {
        if( s[i] == 0)
        {
            for(j = i + 1;j < size; j++)
            {
                s[j-1] = s[j];
            }
            
            size--;
        }
        else
        {
            i++;
        }
    }
    printf("s = %s\n",s);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长生君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值