C语言——深入理解指针4

1.字符指针变量

字符指针:char* 

如图,这是一般使用方法,但还有另一种使用方法,如下图:

而从监视窗口中可以知道,s还是字符指针,指向字符i。

所以字符数组可以用来表示字符串,但它存储的还是第一个字符的地址,通过它可以访问一个字符串。

那么,字符数组与字符指针表示字符串有什么区别吗?

可以看到,字符数组中存放字符串,字符串的内容是可以修改的,而字符指针却不行。

这是因为字符指针存放的是字符串常量,虽然也是在一块连续空间存放多个字符,但常量字符串的内容是不能修改的。

上面图中的结果是str1与str2是不同的,str3与str4是相同的。

因为str1,  str2是数组名,比较的就是数组首元素的地址,str1,  str2分别向内存中申请空间存放一个字符串,所以str1,  str2的地址是不同的

而str3,  str4是指针变量,里面存放的是这个字符串的地址,因为字符串是相同的,那么str3  , str4 所指向的地址也就是相同的

2.二维数组传参本质

二维数组传参可以这样写:

一维数组传参本质上是传首元素的地址,C语言——深入理解指针2-CSDN博客,那么二维数组传参的本质是不是也是这个呢

二维数组可以看作是一个元素是一维数组的数组,那么传参时写数组名就是首元素的地址,也就是第一个一维数组的地址,所以二维数组传参也可以这样写:

写成数组指针的形式是没有问题的.

总结:二维数组传参时,形参既可以写成二维数组的形式,也可以写成数组指针的形式

3.函数指针变量

函数指针变量就是存放函数地址的,未来能够通过地址调用函数

可以看到,两个地址是相同的,所以函数名与&函数名都是函数地址

要注意,这两个是相同的,没有区别,与数组名和&数组名不同!!C语言——深入理解指针2-CSDN博客

函数指针的写法与数组指针是非常像的

这两种代码,第一个是函数,返回类型是int* ,第二个才是我们的函数指针变量与数组一样,*也要用()括起来,类型是int( * )(int,int)形参是可以不写的,只要指出了形参类型就可以了

既然函数名是函数地址,那么直接使用函数指针去调用函数也是可以的,如下图:

总结:

最后,求点赞,拜托了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值