通俗的说,指针就是地址;指针变量是变量,是一个用来存放地址的变量。
1.指针数组
指针数组是一个可以存放指针的数组。
例:
int *arr1[10]; char *arr2[4];
2.数组指针
数组指针是指向数组的一个指针。
例:
int (*p)[10]; //p代表数组指针
int *p[10]; //p代表指针数组
注意:
(1)[ ]的优先级要高于号的,所以加上()保证p先和结合;
(2)以后我们判断一个变量的类型时,只需要看它的优先级即可,若变量先和数组结合,那么该变量就是一个数组;若变量先和*结合,那说明此变量是一个指针。
数组指针的使用:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[10] = { 0 };
printf("%p\n", arr); //008FFE58 arr:表示数组首元素地址;
printf("%p\n", arr+1); //008FFE5C arr+1:表示第二个元素的地址;
printf("%p\n", &arr+1); //008FFE80 &arr:表示数组的地址;&arr+1:表示该数组下一个数组的地址;
system("pause");
return 0;
}
数组在传参时需要:
(1)所有的数组都会降为一维数组;
(2)数组传参会退化为指针;
(3)该指针指向其内部元素类型。
二维数组传参:
void test(int arr[3][