指针数组和数组指针的区别是什么
区别:对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于它指向的数组占多少字节,这个不能够确定,要看具体情况。
本教程操作环境:windows7系统、c99版本、Dell G3电脑。
一、数组指针和指针数组的定义
1.指针数组:定义 int *p[n];
指针数组可以说成是”指针的数组”,由于*p没有括号,首先这个变量是一个数组,其次,”指针p”修饰这个数组,意思是说这个数组的所有元素都是指针类型,而指针所占的字节数和其类型无关,只与系统有关,在32位系统下,任何类型的指针占据4个字节,在64位系统下,任何类型的指针占据8个字节。
2.数组指针:定义 int (*p)[n];
由于()的优先级高,首先说明p是一个int类型指针,它是指向一个整型(int)的一维数组,这个一维数组的长度是n,也可以说是总共有n个格子。数组指针也称指向一维数组的指针,亦称行指针。
数组指针也可以称为“数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
二、数组指针和指针数组的使用
1.数组指针
首先定义一个数组指针,既然是数组的指针,说明是用指针p去指向一个一维数组,即:
int (*p)[[4]]; //这里定义int类型,p是一个指针,指向一维数组的首地址,这个一维数组大小为4
登录后复制