前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >指针(1)

指针(1)

作者头像
秦jh
发布2024-01-19 10:25:51
900
发布2024-01-19 10:25:51
举报
文章被收录于专栏:c语言,c++

指针基本概念

1.指针变量是一个变量,用来存放地址,地址唯一标识一块地址空间。

2.指针的大小固定是4/8个字节(32位平台/64位平台)。

3.指针有类型,指针的类型决定+-整数的步长,以及解引用时的权限。

字符指针:

如图,这是最简单的例子,我们利用指针p指向ch的地址,打印时,解引用p就能打印字符g啦。

如果使p指向常量字符串,打印时只打印了a这是为什么呢?其实,当我们用指针指向常量字符串时,指向的是首字符的地址,即a的地址。如果我们想打印字符串,直接用%s即可。

如上图是一种比较特殊的写法,我们可以把它当成数组,通过[]来选取某个字符。 

不过需要注意的是,我们不能通过指针p来改变常量字符串的内容,否则就会出现下面的情况

分析:str1和str2是两个数组,数组的操作方式是将右边常量字符串的内容拷贝进来,所以他们是两个空间,只是内容相同,所以str1 != str2。而str3和str4是两个指针,编译器在处理的时候,会将相同的常量字符串做成同一个地址,所以,str3和str4指向的是同一个常量字符串,所以str3 == str4。如果在str3和str4前面都加上&,这时,他们表示的是各自的地址,就不一样了。如下图。

指针数组

指针数组是数组,是用来存放指针的数组。

上面是用指针数组模拟一个二维数组,因为arr里的元素都是指针,所以arr的类型是int*。

数组指针 

数组指针就是指向数组的指针。

如上图,表示的是指针p指向有10个元素且元素都是整形的数组,注意*p左右两边的括号不能省略,否则就会变成指针数组了。注意:方括号里的大小不能省略,如果省略了,系统会默认是0。

例子:

分析:二维数组传参,形参部分可以写成指针。数组名是数组首元素的地址,我们可以把二维数组看成两个一维数组,此时p指向arr第一行的起始地址。

函数指针

可以看出,&函数名就是函数的地址,函数名也是函数的地址。 

如上图,如果我们想用p指向add函数,可以先写出(*p),注意括号不能省略,接着查看add形参的类型和返回值的类型,按上图所示即可写出。(add前面的&可有可无)。

如果我们想调用,只需解引用然后给上实参即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档