数组 指针

int a;
int b[10] ;
变量a称为标量,因为它是个单一的值,这个变量的类型是一个整数。
数组名b的值是一个指针常量,也就是数组第一个元素的地址
数组具有确定数量的元素,而指针只是一个标量值

sizeof求数组长度时:
int a[5]
求得数组长度5*4 int为4个字节
一级指针指向一级指针的话

int b = 6;
    int *p, *a=&b;
    p = a;
    printf("%d  %d  %d %d  %d", p,*p,&a,*a,&b);

会打印出b的地址,如果p是二级指针会打印指针a的地址,
二级指针指向一级指针求值需要两个接引用符‘*’;

int arr[5] = { 1,12,12,2,3 };
    int b = 6;
    printf(" %d %d %d %d %d ",arr, arr+3, arr[3], *arr+3, *(arr+3));

分别打印数组arr[0]地址,a[3]地址,a[3]的值2,先取值1再加3,a[3]的值;

指针数组: 元素都是指针的数组;
定义格式: int a = 3; int a[10]; int *a[10];

数组指针:
int a[10][10];
int (*p)[10] = a; //int **p = a;
a[i][j] = ((p + i) + j) = p[i][j]
[] 下标运算符 * 解引用 &引用(地址符)

int p;          //整形变量
 int *p;         //指向整形变量的指针变量(指针)
int p[];        //整形数组
int *p[5];      //指向整形变量的指针的数组(指针数组)
int (*p)[5];    //指向每一行有5列的数组的指针(数组指针)
int p(){};      //返回值为整形的函数
int (*p)();     //指向上面↑这种类型函数的指针(函数指针)
int (*p[4])();  //存放↑这种类型指针的数组(函数指针数组)
int (*)[5] p(){}; //返回71行类型的指针数组的函数(数组指针函数)
int* p(){};       //返回值为指针类型的函数(指针函数)
int* (*p)();    //指向76行这种类型的函数的指针(指针函数指针) 
int* (*p[5])(); //装有5个77行这种类型的指针的数组(指针函数指针数组)

数组指针
int arr[10][10];
int (*p)[10]=arr;
二维数组第一个下标运算符填的是行数,因为a[10][10],每行有10列这样的格式,
这是一个数组指针,每个指针指向了每行的首地址,一共十行;
int (*p)[5]; //指向每一行有5列的数组的指针(数组指针)

指针数组
int *p[5]; //指向整形变量的指针的数组(指针数组)

指针数组:是一个承载着指针的数组它的所有成员都是指针
int *a[5];
int b=4;
int c=1;
a[0] = &b;
a[1] = &c;
输出 4,1;

数组指针的打印

char arr[5] = { 1,12,12,2,3 };
    int   brr[10][10];
    int  (*p)[10] = brr;
    for (int a=0;a<10;++a)
    {
        for (int j = 0; j < 10; ++j)
        {
            brr[a][j] = j;
            printf("%d  ",brr[a][j]);
        }
    }
    putchar('\n');
    for (int i=0; i<100; ++i)
    {
        printf("%d  ", (*p)[i]);
    }

二维数组需要两个下标才能找到数组的值,如果只用一个参数那它就是一个指针,只会打印地址;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值