C语言指针数组指针怎样理解?

有没有人在啊,想请说下,C语言指针数组指针怎样理解?
最新回答
绝绝子

2024-05-04 11:21:53

  • 指针数组,指数组元素就是指针

  • 数组指针,对于一维数组来说就是数组名

  • 故对于一维数组来说,数组名是第一个元素的指针,而元素本身也是指针,故数组名是指向指针的指针。

  • 例如: int * p = &a; int ** q = &p;

  • 则p中储存的是整形变量a的地址,而指针p自身也是变量(指针变量通常占4个字节),故q中储存的就是变量p的地址。q就成了指向指针的指针。

﹎梦醒的夏天╰╯

2024-05-04 06:02:10

1、指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针;数组指针:a pointer to an array,即指向数组的指针。
int* a[4]     指针数组    
                  表示:数组a中的元素都为int型指针   
                  元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*
int (*a)[4]  数组指针    
                  表示:指向数组a的指针
                  元素表示:(*a)[i]  

2、下面通过实例来说明数组指针与指针数组的区别:  

#include <iostream>
using namespace std;
int main()
{
    int c[4]={1,2,3,4};
    int *a[4];   // 指针数组
    int (*b)[4]; // 数组指针
    b=&c;
    // 将数组c中元素赋给数组a
    for(int i=0;i<4;i++)
    {
        a[i]=&c[i];
    }
    // 输出看下结果
    cout<<*a[1]<<endl;   // 输出2
    cout<<(*b)[2]<<endl; // 输出3
    return 0;
}
岁月无忧

2024-05-04 06:57:48

指针数组和数组指针都是从后往前面理解的,比如:
1、指针数组:就是数组里面存的是指针,定义是这样的 int*a[];

2、数组指针:就是指针指向的是一个数组,定义是这样的int (*a)[];

你要是按照这个规律记忆的话就不会弄混淆了,C语言中[] 和*相比,[]的优先级要高,所以定义数组指针的时候要加()

------------
Best Regards!
ds_zhazha