《看聊天记录都学不会C语言?太菜了吧》(19)巩固开始,数字1、2、3、4能够组成多少个 3 位数的不同的排列——巩固1
《看聊天记录都学不会C语言?太菜了吧》(18)2分钟搞结构体——结构体
看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针——指针与多重指针
《看聊天记录都学不会C语言?太菜了吧》(16)我一直以为校花很漂亮,直到我叫了她一声…——生命空间、命名规则
《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟——自定义函数传参、返回值
《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?——自定义函数
《看聊天记录都学不会C语言?太菜了吧》(13)(9*9 乘法表)寻找电脑中的盲盒彩蛋——for 循环与循环嵌套 九九乘法表
《看聊天记录都学不会C语言?太菜了吧》(12)循环有多容易?你看一眼就怀…——循环
《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组——数组
《看聊天记录都学不会C语言?太菜了吧》(10)程序媛聪明绝顶了——逻辑与运算符
《看聊天记录都学不会C语言?太菜了吧》(9)老公饼真的有老公送?——字符数组
《看聊天记录都学不会C语言?太菜了吧》(8)牛郎和织女竟有一个孩子?——多条件if
《看聊天记录都学不会C语言?太菜了吧(7)下一篇文章告诉你牛郎是谁——if逻辑判断
《看聊天记录都学不会C语言?太菜了吧(6)以前跟我说编程很难的给我站出来——浮点数及变量运算
《看聊天记录都学不会C语言?太菜了吧(5)打了一把游戏我学会了一个编程知识?——变量输出及占位符
《看聊天记录都学不会C语言?太菜了吧(4)原来我早就会编程了——变量
《看聊天记录都学不会C语言?太菜了吧(3)代码都在谈恋爱难道你不知道?——头文件及标点
《看聊天记录都学不会C语言?太菜了吧(2)我说编程很容易你们不服?——Devc使用及HelloWorld
《看聊天记录都学不会C语言?太菜了吧(1)我在大佬群里问基础问题没人理?——学习建议
【小白进】大佬们学习为什么简单?小白该如何学习?学历不高如何找工作?副业很好赚?了解后少走弯路
作者简介
作者名:1_bit
简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。
博客地址:https://i1bit.blog.csdn.net
🐰小C:小媛,这节课我介绍个外卖小哥给你认识怎么样?
👸小媛:哈?你想搞事?
🐰小C:我就是想给你介绍认识,我觉得你肯定很喜欢的。
👸小媛:你是不是想说他很帅?
🐰小C:帅不帅我不懂,主要是能干事。
👸小媛:唔…那行吧。
🐰小C:那现在打开电脑吧。
👸小媛:为啥要打开电脑?不是要介绍外卖小哥给我的吗?
🐰小C:我说的是C语言中的一个知识点呀,你在想什么。
👸小媛:…
🐰小C:我说的这个知识点叫做指针,可是有很大用处的哟。
👸小媛:指针?我听说很难,但是又很有用。
🐰小C:嗯,在这里我就告诉你基础用法,先学会怎么用就可以了。
👸小媛:所以你说的外卖小哥是他?
🐰小C:对呀,就是他呢。
👸小媛:我怎么觉得你在给我介绍一个工具人,然后告诉我怎么样去用这个工具人,让他开心我也开心。
🐰小C:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,你真是万事皆可拟人化。
👸小媛:不不不,是你开的头,不能怪我。
🐰小C:好了,我们开始回归正题吧。
👸小媛:我也不跟你闹了。
🐰小C:指针呢,其实你可以先当作他是一个跑腿的,你可以给他一个地址,然后让他帮你把内容存过去,是不是很像外卖小哥?
👸小媛:所以该怎么用呢?
🐰小C:你看下面的代码。
#include<stdio.h>
void main(){
int *p;
int a=10;
p=&a;
}
👸小媛:我只能说我发现了多了个 * 号和一个 & 是我不会的。
🐰小C:这两个字符正是最开始学习指针的关键,代码 int *p; 就表示创建了一个整型指针,名字叫做 p,简单吧?
👸小媛:创建是挺简单的,然后呢,请继续往下讲。
🐰小C:之后创建了一个变量 a,里面存储的值是10,随后 p=&a中 &号表示什么?
👸小媛:我怎么知道?
🐰小C:你还记得最开始使用 scanf 的时候 & 是用来干啥的吗?
👸小媛:取地址?
🐰小C:是的,在这 p=&a 表示取到变量 a的地址赋值给指针,这个时候这个指针变量 p 就等于是你这个变量 a 的代理人了,如果你想对变量 a 操作直接使用 p 就可以。
👸小媛:你的意思是赋值和取值这两个操作?
🐰小C:是的,那你懂怎么写吗?
👸小媛:我感觉有坑,不过我得试试,是不是这样。
p=10;
1
🐰小C:哈哈哈,不是的,指针有另外的写法哟。
👸小媛:我就知道,你赶紧说吧。
🐰小C:你看下面的代码。
#include<stdio.h>
void main(){
int *p;
int a=10;
p=&a;
printf("a 变量存储的值是 %d \n",a);
*p=20;
printf("a 变量存储的值是 %d \n",a);
}
👸小媛:咦?你的意思是说,如果要操作指针变量 p 需要在前面加一个 * 号才能够间接对变量 a 进行操作?
🐰小C:是的,* 号叫做取值符号,使用 * 号就会操作指针 p 所指向的地址,因为我们在之前使用了 & 符号对变量 a 进行取地址,那么使用 * 号就会对这个变量地址的内容进行更改。
👸小媛:奥,我懂了,我运行了一下,果然值发生了改变。
🐰小C:指针的基本用法不难吧?
👸小媛:哈哈哈,基础用法挺好记的。
🐰小C:我想问你一个问题,你知道二手房东是指什么吗?
👸小媛:就是租房的时候,那个人不是房东,而是转租的。
🐰小C:对的呢,在指针里面也有二手跑腿的,叫做指向指针的指针。
👸小媛:什么鬼?
🐰小C:给你看一个示例。
#include<stdio.h>
void main(){
int a=10;
int *p,**p1;
p=&a;
p1=&p;
printf("%d\n",**p1);
}
👸小媛:我感觉我脑子有点糊了。
🐰小C:哈哈哈,你看代码中 *p 就是正常的指针,**p1 就表示这是一个指向指针的指针。*p 是指向变量,而 **p1 就是表示指向指针。其实指针也是一个变量,他也有一个地址,**p1 就表示他讲会指向一个指针,而指向的那个指针则会指向一个变量,操作 **p1就等于操作那个最终指向的变量。
👸小媛:好像明白了,请继续说。
🐰小C:你可以看代码中,使用一个 * 号的指针 p 指向了一个变量 p=&a 随后使用两个 * 号的指针指向了一个指针 p,写作 p1=&p ,这个时候我们使用两个取地址符 **p1 显示取值的内容结果就是如下。
👸小媛:唔,明白了。
🐰小C:那我问你,如果我需要一个指针,指向一个指针,该指针又指向另外一个指针,那这个指针需要使用多少个 * 号?
👸小媛:哈哈哈,又增加一个吧?因为第一个指针用一个 *,第二个指针用两个 *,那么第三个指针不会是使用三个 *吧?
🐰小C:对的,你看看下面。
#include<stdio.h>
void main(){
int a=10;
int *p,**p1,***p2;
p=&a;
p1=&p;
p2=&p1;
printf("%d\n",***p2);
}
👸小媛:哈哈哈,其实就是无限套娃了,懂了,跟之前的都一样,只是多了个 * 号,结果都是对的。
🐰小C:是的,你先去自己练习一下吧。