【C语言】指针这玩意能干嘛

作者: 沙猪教写程序分类: 计算机技术 发布时间: 2023-09-14 19:17:26 浏览:28232 次

【C语言】指针这玩意能干嘛

矢香浓:
直接操纵变量本身吧,我大一,这是我对指针的理解[doge]

【回复】变量是保存数据的内存空间,指针是保存另一个变量内存地址的变量。 C语言可以使用指针动态申请和更改对象的内存,stdlib.h。 数组是连续的内存,但数组作为函数输入值时,需要写成指针的形式,传入的是数组的第一个元素。 等你学到链式储存结构时,就会发现指针很有用。 但平时尽量不用指针,尤其是多次指针。
【回复】1 数组操作(a【】的【】实际上是一个指针的漂移操作) 2 链表,非连续内存就不能直接用数组的【】来直接漂移找变量了(当然,用数组模拟链表也不是不行,只不过比较少用) 3 图论中存图,其中邻接表的链式前向星的指针实现(实际上是一个链表的拓展应用),类似的,树结构也能这么存 这几个应用上,体现指针主要是为了应对内存非连续性的但却存在顺序联系的一堆数据的存取而存在的,就是地址操作,不过现在高级语言基本上都封装的差不多了,用的比较少
【回复】准确来说是直接操作内存
HYTommm:
指针的定义形式应该是int* p吧,空格在*的后面[思考]

【回复】如果你无意写了一句 int* p1,p2; 那么你以后debug就要痛苦死了[笑哭]
【回复】回复 @夏至_未夏 :但是int* a,b,那么b他就不是指针
【回复】都可以 但是我更倾向于星号右置 原因有二。一,int* a,b;其中a是指针,b是int。第二,int *p;可以理解为,我定义了一个变量p,对p进行解引用操作*后,得到int。
inclusive丶:
往深讲指针就是指向进程地址空间的一个位置,其中进程是可执行文件运行起来后在内存中的执行流,进程地址空间本质是由操作系统和编译器给每个进程虚拟出来的。具体实现就是规定好地址空间每个区域的范围(其实就是常数)。空间内的地址编号是按照地址总线的条数(64或32条)排成bit位,再用16进制表示。进程地址空间中有1G的内核空间,每个进程的内核空间放的都是操作系统的代码,进程就是通过操作系统中设定的时间片(闹钟),不断在内核态(操作系统代码)和用户态(进程代码)之间交错运行。而进程真实存储的物理内存和进程地址空间是通过页表来进行映射的,页表除了映射内存地址还可以映射磁盘地址。每个进程都有自己独立的进程地址空间和页表,在语言层面上讲的所有东西都只是基于一个虚拟出来的空间,没有触及底层原理。

纸墨笔:
不知道对不对,我自己对指针的理解是存放在A内存中存放者B内存的地址。通过某些操作让这个A内存里的地址B内存执行写入或者读取。 如果不对希望有大佬能用汇编写一个类似指针的东西,这样更好理解。

【回复】就好比 一个结构 一般来说一个变量在(32位)栈中占4字节 因为结构 占用是不固定的 所以需要先访问指针 比如指针的值 是0x1234 那么在内存中0x1234 就是结构的数据 0x1234 第一个成员 0x1234+4是第二个成员
D1ny:
swap 函数里面交换的那几行可以不加*吗

【回复】不行,不然会交换失败的,别问我怎么知道的[doge]
身披羊皮的羊:
1:09秒说p和a的地址是一样的,不是吧,p有自己的地址,应该是p的值和a的地址是一样的吧?我是小白不懂,请赐教。

【回复】p就是地址 你懂这个意思就行 也可以看看新视频【【C语言】当我试图把指针讲的更简单通透-哔哩哔哩】 https://b23.tv/EpFqE4H
邪恶仓小鼠:
大概意思是指针这一特性提供了栈和堆两块内存之间的联系,是不是这样

可乐-sir:
为啥通过指针可以直接操作变量本身啊?最后讲的指针的作用我还是有点不理解啊,能解答一下吗?up主

【回复】回复 @可乐-sir :[微笑]指向了这个房间不就能操控这个房间里的值了吗
【回复】回复 @沙猪教写程序 :感谢up主答疑啊,但是好像up主还有话没有说完吧
【回复】回复 @可乐-sir :变量的值就是这个房间的住客 地址指向了这个房间的住客 变量名也相当于这个房间
带上耳机听故事:
定义变量不是不分配内存嘛?初始化变量才分配内存吧?

账号已注销:
只能说,玩不明白就去整Java Python,肯定没有指针[doge]

【回复】NullPointerException:你在说什么?[吃瓜]
今年夏天え:
p和a的地址不同吧,那是p的值和的地址

tjgyaya:
int *p; 指针 int a; &a 取地址符,就像榔头 p=&a; 指针p 就是门牌 内存地址 *p 是房间里面的人 对应的值

我爱冰红茶:
数组传参的时候,在加了取地址符后,用下标【 】来操作地址的时候,会发现vs2019报错,反之,取消取地址符后就可以正常运行,还是说不能用下标来操作吗?

程序 C语言 计算机 指针 C/C++ 必剪创作 我在哔哩哔哩课堂学习 《方寸课堂 大千世界》教师节特别企划

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!