字符指针变量
在指针类型中我们知道有一种指针类型为字符指针char*
如果我们想用他
int main()
{
char p = 'w';
char *d = &p;
return 0;
}
他可以存放字符变量的地址
也可以这么使用
int main()
{
char *d = "hello"
return 0 ;
}
其本质是把字符串"hello"
的首字符的地址储存到字符指针中,不是将整个字符串储存
就相当于将’h’的地址储存到字符 指针变量中
数组指针变量
之前我们学习了指针数组,就是指针作为元素储存在数组中
而现在的数组指针是一种指针变量
我们知道了整数指针变量int *,浮点型指针变量float *
那数组指针变量就是:存放数组的地址,能够指向数组的指针变量
数组指针变量长int (*p)[i]
这样
p先于*结合,说明p是一个指针变量,然后指针变量指向的是一个大小为i个整型的数组([ ]的优先级要高于*号的,所以必须加上( )来保证p和*结合)
那么数组指针变量是怎么初始化的呢?
数组指针变量用来存放数组地址,那么怎么获得数组呢?
我们之前有讲过,&数组名
就是数组地址,如果要存放数组地址就要存放到指针变量中
int (*p) [8]= &arr
解析如下:
二维数组传参的本质
当二维数组语言传参给一个函数的时候,我们这样写
# include <stdio.h>
void test(int parr [3][5])
{
....
}
int main ()
{
int arr[3][5]={{1}{2}{3}};
test(arr)
...
return 0;
}
这里的实参也是二维数组,形参也是二维数组的形式
我们之前讲解过,二维数组的数组名表示的是第一行的地址,是一维数组的地址,第一行的一维数组的类型就是int [5]
,所以第一行的指针类型就是int * [5],
就意味着二维数组传参的本质上也是传递了地址,传递的地址就是第一行这个一维数组的地址
那么我们也能把形参改写成指针形式
# include <stdio.h>
void test(int (*p) [5])
{
....
}
int main ()
{
int arr[3][5]={{1}{2}{3}};
test(arr)
...
return 0;
}
今天的知识密度很大,希望大家认真理解
今天的知识讲解完啦,如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!
祝看到这里的人天天开心哦(笔芯)