一、一维数组传参的本质
一维数组传参其实传的是首元素的地址。
比如说上面这个函数,它接收的其实是数组首元素的地址,而不是整个数组。
所以sizeof(arr)其实是首元素的大小。
所以如果把数组传参给函数,那么在函数里面是算不出这个数组的长度的。
二、指针数组
指针数组是数组,里面的元素是指针。
比如数组里面有5个元素都是整型指针,那么这个指针数组写成 int * arr[5]
二维数组arr里面有3个元素{arr1,arr2,arr3},那么arr这个数组名是arr1的地址,arr1这个数组名是arr1里面首元素的地址。
三、字符指针变量
char * p="abcd" 等价于 char arr[]="abcd"
char *p=arr
(这个是本质)
这个代码就是把abcd首元素的地址存放到字符指针变量p里面。
printf("%s",p) 表示打印整个字符串"abcd"
printf("%c",* p) 表示打印字符串的首元素,也就是a