嵌入式学习第十二天

1.指针数组:
    int *a[5];

    char *str[5];

    指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作
    二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组

嵌入式学习第十二天_第1张图片

嵌入式学习第十二天_第2张图片嵌入式学习第十二天_第3张图片

2.指针和二维数组的关系:
    int a[2][3] = {0};
    int *p = NULL;
    int (*q)[3] = NULL;

    p = &a[0][0];
    p = a[0];
    p = *a;
    q = a;

嵌入式学习第十二天_第4张图片

    二维数组的数组名是指向数组第一行元素的数组指针

嵌入式学习第十二天_第5张图片嵌入式学习第十二天_第6张图片

嵌入式学习第十二天_第7张图片嵌入式学习第十二天_第8张图片

    访问二维数组第m行第n的方式:
        a[m][n]
        *(a[m]+n)
        *(*(a+m)+n)
        *(p+m*N+n)
        *(*(q+m)+n)
        *(q[m]+n)
        q[m][n]

嵌入式学习第十二天_第9张图片嵌入式学习第十二天_第10张图片
 

  二维数组传参:
        int a[2][3] = {0};
        int Fun(int (*parray)[3], int len);

        char str[5][32] = {0};
        int Fun(char (*pstr)[32], int len);

嵌入式学习第十二天_第11张图片

嵌入式学习第十二天_第12张图片嵌入式学习第十二天_第13张图片

嵌入式学习第十二天_第14张图片嵌入式学习第十二天_第15张图片

3.二级指针:
    1.指针数组传参时 
        int *a[5] = {NULL};  
        a: int **

        char *pstr[5] = {"hello", "world", "how", "are", "you"};
        int Fun(char **ppstr, int len);

嵌入式学习第十二天_第16张图片嵌入式学习第十二天_第17张图片

嵌入式学习第十二天_第18张图片嵌入式学习第十二天_第19张图片

嵌入式学习第十二天_第20张图片

作业:
    1.现有二维数组 char str[5][32] = {"hello", "world", "how", "are", "you"};
            封装函数实现对所有字符串的排序
            封装函数实现对所有字符串的打印

    2.现有指针数组 char *pstr[5] = {"hello", "world", "how", "are", "you"};
            封装函数实现对所有字符串的排序
            封装函数实现对所有字符串的打印 

嵌入式学习第十二天_第21张图片嵌入式学习第十二天_第22张图片

嵌入式学习第十二天_第23张图片

你可能感兴趣的:(学习,嵌入式硬件,c语言,开发语言)