回头C语言

1
代码:https://github.com/saber110/C_review

循环

1
2
break: 跳出本层循环
continue : 跳出本次循环接而执行下次循环

数组初始化

  1. 数字型数组 默认初始化为0, 字符型数组 默认初始化为’\0’(空格符)**

    1
    2
    3
    4
    5
    6
    7
    int a[3][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12,}
    };
    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int a[3][4] ={{1},{5},{9}};

    前两种初始化的方法效果完全一致,但是前面的清晰可读推荐使用

    第三种方法相当于

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a[0][0]= 1;
    a[1][0] = 5;
    a[2][0] = 9;
    其余元素全为0
    ```
    ### Remark
    初始化的时候如果确定全部元素的话可以省略一维数组的长度和二位数组的第一维长度
    **数组长度**

    char c[] = “i am a student”;
    sizeof(c) = 11;

    1
    2
    系统在后面自动添加"\0"表示字符串终结 (10+1)

    char C[5] = “CHINA”;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    也是**合法**的表达
    ### 数组名做形参时不会检查他的大小,当指定实参时形参指向实参的地址,实质上同在相同的内存空间
    # 这儿有个关于字符数组的大坑
    1. C语言的**字符**数组可以在初始化的时候直接赋值
    2. 但不可以用

    str=”china”; //尝试之间赋值给已声明的字符数组str
    str1 = str2;

    1
    * 在后面要改变字符数组的内容需要使用

    gets(str);
    strcat(str,str1);
    strcpy(str,str1);
    strncpy(str,str1,2);//将str1中的前两个字符赋值到str中
    ```