【快速学】多维数组,多级指针加减运算

引子:a是1级指针,a+1相当于改变了数组从右往左数第1个下标的值。

总结:

p是i级指针,p+1相当于改变了数组从右往左数第i个下标的值。

单位增量=对应下标右边的下标相乘

定义一个4维数组,并进行指针的加减运算:

#include<stdio.h>
int main()
{
    int a[5][6][7][8]={};
    printf("a=%u\n",a);
    printf("a+1=%u\n",a+1);         //4级指针 ,相当于改变从右到左数,第4个下标的值 
    printf("*a+1=%u\n",*a+1);       //3级指针 ,相当于改变从右到左数,第3个下标的值 
    printf("**a+1=%u\n",**a+1);     //2级指针 ,相当于改变从右到左数,第2个下标的值 
    printf("***a+1=%u\n",***a+1);   //1级指针 ,相当于改变从右到左数,第1个下标的值 
    return 0;
}

运行结果:

a=6480848
a+1=6482192
*a+1=6481072
**a+1=6480880
***a+1=6480852

解释:

6482192-6480848=1344,一个int占4个字节,1344/4=336=6*7*8

假设a处存储的值用a[x][y][z][w]表示,则a+1处存储的值可用a[x+1][y][z][w]表示

a为4级指针,他的加减运算相当于改变了x的值,即数组从右往左数第4个下标的值

 

posted @ 2023-01-22 23:33  尚方咸鱼  阅读(67)  评论(0编辑  收藏  举报