• 复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针


    复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针

    20:52:01 2019-12-31

    整型数组 int a[10];
    字符数组 char b[10];     

                                           _______________________
    整型指针数组 int *p[10]; |__|__|__|__|__|__|__|__|__| 每个格子里存的是一个指针,每个指针都是int类型的,会指向一个int的值.

    1 for(int i=0; i<10; i++)
    2   p[i] = &a[i];    //把a中的每个元素的地址都放在了指针数组p里.
    3 
    4 for(int j=0; j<10; j++)
    5   printf("%d ", *(p[i]));//把p中的地址转化为真实的内容,也就是使用*对地址取值.

     字符指针数组 char *c[10]; 和上面一样,每个指针都是char类型的,会指向一个char

    下面这两个是等式.表示左右两边的值是相等的

    a == &a[0]
     

    重点说说数组指针

    整型数组指针 int (*P)[10]; p是一个指针,这个指针指向一个有10个格子的数组.这个10个格子里存的都是int类型的东西

    int a[10];
    int (*p)[10];
    p = a;
    p = &a;
    

     

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main() {
     5 
     6     int a[10] = {1,2,3,4,5,6,7,8,9,10};
     7     int (*p)[10];
     8     p = &a;        //这种写法才是正确 且没有错误的
     9     //p = a;  这种写法会给警告.虽然我们知道数组的名字也可以被用作数组的首地址.
    10     int i = 0;
    11     for(i=0; i<10; i++)
    12         printf("%d ", p[0][i]);        //这里的p其实是指向一个二维数组的首地址,但是实际上指向的是一个一位数组,所以p[0][0]就是这个数组a的a[0]了.
    13                                     //这里的p[0][i]就是遍历数组的第一行.
    14     /*
    15     上面的p = &a;这句话其实就是将p[0]指向了a[10]  所以p[0][i]只需要对i++即可操作a[i]了.
    16     p[0]-> [p00][p01][p02][p03][p04][p05][p06][p07][p08][p09] 第1 行  
    17     p[1]-> [p10][...][...][...][...][...][...][...][...][...] 第2 行
    18     p[2]-> [p20][...][...][...][...][...][...][...][...][...] 第3 行
    19     p[3]-> [p30][...][...][...][...][...][...][...][...][...] 第4 行
    20     p[4]-> [p40][...][...][...][...][...][...][...][...][...] 第5 行
    21     p[5]-> [p50][...][...][...][...][...][...][...][...][...] 第6 行
    22     p[6]-> [p60][...][...][...][...][...][...][...][...][...] 第7 行
    23     p[7]-> [p70][...][...][...][...][...][...][...][...][...] 第8 行
    24     p[8]-> [p80][...][...][...][...][...][...][...][...][...] 第9 行
    25     p[9]-> [p90][...][...][...][...][...][...][...][...][p99] 第10行
    26     经过上面这个表,就能够知道这个数组指针p是一个怎样的指针了. 数组指针p竟然是一个二维指针.
    27     */
    28 
    29     return 0;
    30 }

    字符数组指针 char (*c)[5];
    这句话中只有c这个符号是我们自己写的,其他的符号C编译器都认识.
    所以我们来品品c是什么应该怎么读.
    c是一个指针,这个指针指向一个 长度为5 的里面存着 字符 的数组


    按照这样的读法,那么int (*p)[10];也很好读了
    p是一个指针,这个指针指向一个 长度为10 的里面存着 整型数字 的数组

  • 相关阅读:
    doctype是什么?
    <img>的title和alt有什么区别
    鼠标悬浮时,蒙版显示;否则,蒙版消失
    右下角内容与正文之间 假 响应式
    上传input中file文件到云端,并返回链接
    获取input标签中file的内容
    HTML中Meta标签中http-equiv属性小结
    select和其元素options
    将数组中的信息准确分开,修改过后再保存到一起
    Bootstrap方法为页面添加一个弹出框
  • 原文地址:https://www.cnblogs.com/dhu121/p/12127390.html
Copyright © 2020-2023  润新知