Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >指针(1)

指针(1)

作者头像
秦jh
发布于 2024-01-19 02:25:51
发布于 2024-01-19 02:25:51
950
举报
文章被收录于专栏:c语言,c++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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言期末不挂科——指针进阶篇】【上】
  指针的类型里面我们知道有一种指针 类型为 字符指针(char *),经过初阶的学习我们已经能用:
用户11029129
2024/06/04
1100
【C语言期末不挂科——指针进阶篇】【上】
C语言----深入理解指针(3)
char* p = "abcdef";//这里的赋值是讲字符串中首字符的地址存在p中
Undoom
2024/09/23
1570
C语言(指针)5
用指针数组来表示二维数组是非常适合的,因为二维数组的每一行就像一个一维数组,这个一维数组也是可以通过指针来访问。
_小羊_
2024/10/16
860
C语言(指针)5
C语言:深入理解指针(3)
    通过深入理解指针(1)和深入理解指针(2),我们对指针有了一个初步的了解,学会了一级指针、二级指针、指针数组……而深入理解指针(3),主要是为了学习不同数据类型的指针变量。
小陈在拼命
2024/02/17
1680
C语言:深入理解指针(3)
C语言进阶-高阶指针
目录 前言 字符指针 指针数组 数组指针 &数组名VS数组名 数组指针的使用 数组参数、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 函数指针数组 指向函数指针数组的指针 ---- 前言 对于初阶指针内容在我的另一篇文章中已经写到(有想法的可以去看看) 附上链接:C语言初阶指针 回顾: 1. 指针是地址,指针变量是用来存放地址的变量(唯一标识一块内存空间)  2. 指针的大小是固定的4/8个字节(32位平台/64位平台)  3. 指针的类型决定了指针的+-整数的步长,指
用户9645905
2022/11/30
4510
C语言进阶-高阶指针
拿捏指针(二)
前面我们已经讲了,C语言的第一篇《拿捏指针(一)》,接下里我们继续深入的来了解指针。
秋邱
2024/10/09
1040
拿捏指针(二)
指针进阶(1)
 下面这种写法是有一点风险的,abcdef是常量字符串,是不能被修改的,当我们去修改他的时候,就会发生错误,所以我们最好在char前加const修饰一下。如果用%c来打印的话,只能获得a,一个字符。
用户10923087
2024/01/23
1430
指针进阶(1)
手撕指针(三)
*ppa 通过对ppa中的地址进⾏解引⽤,这样找到的是 pa , *ppa 其实访问的就是 pa .
用户11367247
2024/11/20
580
手撕指针(三)
【C语言】深入解开指针(四)
通过对前面指针的学习,你可能对指针有了一些理解,比如,数字名的理解,然后怎么使用指针来访问数组,二级指针,指针数组 …
学习起来吧
2024/02/29
1980
【C语言】深入解开指针(四)
初识C语言·指针(3)
打印出来的结果是没有异议的,只是,指针变量只能存一个元素的地址,那pc存的是谁的地址呢?
_lazy
2024/10/16
930
初识C语言·指针(3)
【C语言】指针进阶:字符指针&&数组指针&&函数指针
✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 🌹感谢您的点赞与关注,同时欢迎各位有空来访我的🍁平凡舍 ---- 文章目录 @[toc] 🚀前言 🚀字符指针 🚀指针数组 🚀数组指针 🍁&数组名 与 数组名 🍁数组指针的使用 🚀数组传参、指针参数 🍁一维数组传参 🍁二维数组传参 🍁一级指针传参 🍁二级指针传参 🚀函数指针 🚀结语 🚀前言 回想之前,我们学了指针的一些基础👉 指针与结构体 我们知道了指针的概念
平凡的人1
2022/11/15
3.4K0
【C语言】指针进阶:字符指针&&数组指针&&函数指针
【C指针详解】进阶篇
大家思考一下,这里是把一个字符串"hello bit."放到pstr指针变量里了吗?
YIN_尹
2024/01/23
3090
【C指针详解】进阶篇
C语言重点突破(2)指针(二)
在我的前一章节,我们提到指针也有类型的区分,有整型指针,浮点型指针,下面我们讲讲字符指针
对编程一片赤诚的小吴
2024/01/23
1620
C语言重点突破(2)指针(二)
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
走在努力路上的自己
2024/01/26
9270
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
指针详解(3)
在使用上,由于pstr存放的是字符串第一个字符的地址所以 对pstr解引用就可以打印第一个字符,打印整个操作符只需提供首元素的地址,使用%s就可以打印出来。
技匠晓晨
2024/11/26
1230
指针详解(3)
带你深层了解c语言指针
arr1数组,arr2数组,arr3数组在内存中都有自己独立的内存空间, 我们将这三个一维数组的首元素地址放在一个新的指针的数组(arr)中,通过指针数组来访问这三个一维数组,效果就如同二维数组一样,但并不是真正的二维数组. 图解:
初阶牛
2023/02/27
3120
带你深层了解c语言指针
【C语言】指针进阶
官方解释: C/C++会把常量字符串存储到单独的⼀个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。 分析: 我们可以看到字符串是一样的,为hello world,str1和str2不同,str3和str4相同,我们可以看到str3和str4的char*有const修饰,str1和str2没有,因此我们得出的结论就是:有const修饰的字符串str3和str4,计算机会将其认为是一种字符常量,相同的常量会被计算机存放到同一个地址里,所以二者相同;str1和str2是变量,被存放再不同的地址里边了,所以两者不同(这也优化了底层的运行,其实计算机每一种规则都是为了简化过程,减少资源的浪费)
s-little-monster
2024/06/06
1360
【C语言】指针进阶
【C语言】指针总结3
注:代码 const char pstr = “hello.”; 特别容易让人以为是把字符串 hello 放 到字符指针 pstr 里了,但是本质是把字符串 hello. 首字符的地址放到了pstr中。*
用户11290673
2024/09/25
1200
【C语言】指针总结3
C指针之舞——指针探秘之旅
https://blog.csdn.net/2303_80170533/category_12794764.html?spm=1001.2014.3001.5482
折枝寄北
2024/11/19
1120
C指针之舞——指针探秘之旅
C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷三)
迷迭所归处
2025/03/20
1110
C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷三)
相关推荐
【C语言期末不挂科——指针进阶篇】【上】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档