欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

理解int *a,int **a,int a[],int *a[]的区别

程序员文章站 2022-06-01 21:59:52
...

理解int *a,int **a,int a[],int *a[]的区别

1.首先我们先谈一谈数组的本质:

数组是多个元素的集合,并且在内存中分布在连续的地址单元中。

其任意一个元素的存储时间是相等的-----即随机存储结构

个人理解:数组就是连续的一排房子,每一个房子都有地址,和房子里面存储的东西,然后 

我们只要知道第一个房子的位置,就可以知道其余房子的在哪里,所以在数组a[], a就是

代表第一个房子的位子,而a[0]前面在加上&---即&a[0] 也是指数组的首地址。

int a[5],*p;
p = a;
p = &a[0];
指向同一个地址

2.谈一谈指针:

指针也是一种变量,它是用来保存其他内存单元的地址,它自己也有自己的地址;
 
指针也有变量的两种属性:1.存储内容,2.自己的位置。

3.int *,int **的作用

int *是用来存一般变量的地址,而int **是用来存int *变量的地址;

4.int a[], int *a[]作用

int a[] 就是从知道第一个地址开始建立一般变量
int *a[]就是从知道第一个地址开始建立指针变量

5.还要知道【】的优先级高于*,所以a先和【】结合,然后它就变成数组了,接着与 * 结合,变成指针。所以说 int *a[] 是一次性定义多个指针;

6.总的来说一下

int *a;			---定义一个指向整型变量的指针a
int **a;		---定义一个指向整型变量指针的指针a
int a[];		---定义一个整型变量数组a
int *a[];		---定义一个指向整型变量指针的数组a

第一次写一些东西,没有什么头绪,只是把自己所想的写出来,以后再接再厉。

相关标签: int * int **