【C指针】十分钟、你要是听不懂、我当场就把这个编译器......

作者: nene1212分类: 校园学习 发布时间: 2020-04-16 22:07:19 浏览:477600 次

【C指针】十分钟、你要是听不懂、我当场就把这个编译器......

MetaMiku:
十分钟,我要是能学会C指针,我当场,就把这个编译器吃掉![doge][doge]

【回复】当你学了汇编的时候,啊,c如此美好
【回复】回复 @心里住着兔子的树獭 :复试汇编的单片机吗[doge]
db一无是处:
老师:总而言之,指针就是地址,知道了吗 我:哦哦哦哦 操作题:二维数组,指针数组,数组指针,各种指向,瞬间爆炸[doge][doge][doge]

【回复】不一样,指针不是地址 指针是一个变量,变量的值是地址(普通)而已
【回复】回复 @rainbow_赵璇 :指针就是地址,指针变量是存放指针的变量,换而言之就是存放地址的变量,我认为这个从命名可以一定程度看出来。指针不是指针变量,指针变量也不是指针,但是为了读起来方便我们通常简称指针变量为指针,这是我的答案。
【回复】回复 @db一无是处 :数组指针和指针数组的区别 【y】【x】 (y指第二维)(x指第一维) 指针数组的第1维度是不确定的 指针数组是由多个指针组成的数组(形成二维) 每一个指针的一维长度都是不确定的 数组指针的第1维度是确定的 例如 int (*p)【3】; 此时数组指针的第1维度是确定的 只要二维确定,从图像上来看可以想象成矩形 数组指针的分配空间的格式 p=(int(*)【3】)malloc(sizeof(int(*)【10】)*5); ———————————————— 版权声明:本文为CSDN博主「rainbow_赵璇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_45696526/article/details/105624254
总之不是你:
指针就是其实类似快捷方式的东西....可以直接引用一些已经在内存里面的东西,就好象你有一个很大的文件,你的的c盘很小放不下,然后放在d盘,指针依靠一个小的变量存储了那个文件在你的堆内存里面的地址,要调用的时候直接“指向”内存地址,不同的文件在内存里面存储方式不一样所以引用指针有所不同,但是万一玩脱了有可能内存泄漏...(自己见解,大佬勿喷)[热词系列_知识增加]

【回复】#include <stdio.h> int main() { int a【5】 = {1, 2, 3, 4, 5}; int* p1 = (int*)(&a + 1); int* p2 = (int*)((int)a + 1); int* p3 = (int*)(a + 1); printf("%d, %d, %d\n", p1【-1】, p2【0】, p3【1】); return 0; } 啥都别说了,来道经典面试题[doge]
【回复】看视频没看到,你这看懂了[大笑]
【回复】回复 @Linux丶Py :第一个答案相当于a【0+5-1】=5,+5是因为a数组只有五个容量 第二个把int指针类型转化为了int类型,导致指针偏移量减少了,原本要偏移4位,输出结果鬼猜得出来 第三个最容易a【2】=3
彭于晏之湖北分晏_:
大家这样理解,我定义一个变量int a=5;可以理解我我开了一间房子,房子是int类型的房子,房子名叫a,只能住int类型,房子里面住着5,就像酒店开了一间房,是高级房(int),只能住高级用户,高级房名字叫天上人间(a),房子住了一个大老板叫5,就是这个意思。 同样int* b,是指针类型,指针就是地址,你可以理解为门牌号,b存放的就是一个房间门牌号,什么房间的门牌号,看最后*的前面是啥就是什么类型地址,*前面是int,所以就只能住int房间的门牌号,int *b,就是b存放int型号变量的地址,可以理解为,我开辟了一个空间,这个空间只能放高级房的门牌号(int *),这个空间名字叫b,b就是门牌号(地址),那么*b就可以通过地址来找到所对应的人,如a的门牌号(地址)是808,那么b就是808,因为b存放的是a的地址,那么*b就是通过门牌号(地址)来找到所对应的值,就是*b就等于5,指针就是这个意思[妙啊][妙啊]

【回复】我去,我们老师上课也是这么比喻的。他后面还说了啥把门牌号放在一个抽屉里,用钥匙锁上,然后要找到这个门牌号先要打开抽屉,忘记了这个是比喻什么都了。
【回复】回复 @稹熙 :多重指针,双重指针存放着前一个指针,这个比喻我一听就能理解
偶像大师URO:
省流量小助手: p=变量的地址 &p=p的地址 *p=变量的值 有点基础的小伙伴看这个就能秒懂了吧[doge]

【回复】回复 @疾风剑豪-Yone :*&p:&p变量的值,而&p是p的地址,所以是p的地址的变量的值,所以*&p是p的地址的变量的值的地址
【回复】来人给课代表发一个三好学生
Hi_星星涛:
p1是存放数据地址的,&p1是p1的地址,*p1是取出存放在p1的数据地址的值。是这样理解的吗?各位。

【回复】正解,不过实际题目把我干懵了。。。
【回复】我也是这么理解的[脸红],感觉评论区都复杂化了(或者学得比较深?)
WilsonAi:
C语言指针还不懂嘛,包你听的明明白白,啃透指针 地址运算符: & 一般注解:后跟一个变量名时,&给出该变量的地址。 示例:&nurse表示变量nurse的地址。 ***间接(或解引用)运算符: *** 一般注解:后跟一个指针名或地址时,*给出存储在指针指向地址,上的值。 示例:nurse = 22;ptr = &nurse; //指向nurse的指针val = *ptr; // 把ptr指向的地址上的值赋给val执行以上3条语句的最终结果是把22赋给val. int a; 下面是重点和难点 int* a; int** a; int (*a)【】; int (*a)(int) a) int a; 表示一个内存空间,这个空间用来存放一个整数(int); b) int a;* 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间; c) int * a;* 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间; d) int (a)【4】; 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为4、类型为int的数组;和int* a的区别在于,++、+=1之后的结果不一样,其他用法基本相同。以上四种类型见上图表示。 *e) int (a)(int); 表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int。 重点: int p【】和int (p)【】前者是指针数组,后者是指向数组的指针。更详细地说。前: 指针数组;是一个元素全为指针的数组.后: 数组指针;可以直接理解是指针,只是这个指针类型不是int也不是char而是 int 【4】类型的数组.(可以结合函数指针一并看看…)intp【4】------p是一个指针数组,每一个指向一个int型的int (q)【4】---------q是一个指针,指向int【4】的数组。定义涉及两个运算符:“”(间接引用)、“【】”(下标),“【】”的优先级别大于“”的优先级别。

南宫婉的大逼兜:
大学的时候,指针难以理解的部分是指向二维数组的指针,很绕,理解起来很费神,然后把两个运算符拿出来各种花里胡哨的让你判断是什么意思,当时就快吐了。二级指针也是,老师喜欢把它和数组放一起考(貌似记得是这样的)[无语][无语]

【回复】敲代码行云流水、考试做题全都不会[doge]
【回复】回复 @nene1212 :这个会不会是因为没看谭教授的书呢[滑稽]
【回复】回复 @必之燃 :基础理解起来还行,和二维数组合起来就很恶心[捂脸][捂脸]
樱岛麻衣の绯闻男友:
不就是函数与反函数吗?[妙啊][妙啊] p=&a a=*p 没学过,就看了这个视频 p先等于a的地址,然后*p顺着p代表的地址指向去结果指到了a,所以*p就是a的值

【回复】我明天考试,就这么理解了,做错来找你[doge]
同聲相應_同氣相求:
我倒是觉得吧,实在消化不了指针的话,就从汇编的角度去看,分分钟了解。为了了解这个概念,我花了3个月时间吧8086汇编学了一遍。效果杠杠的。[滑稽]

【回复】感觉大学是不是就是自学,老师上课几乎都是水,一节课可以翻完一章的c程序设计基础,期末也不画重点,也不讲题目,因为结课了,然后期末各显神通…[大哭]
【回复】早日开始自学,早日成为大神( ̄▽ ̄)
【回复】我也学了王爽的8086汇编语言,对于简单的指针可能还行,但复杂的指针,还得深入了解
幸福的板儿砖:
&是取地址,描述当前变量的内存位置。*是解引用,描述指针变量所代表的变量的值。

【回复】*说成提取比较好,解引用完全是抄翻译的,比如电源负在英语里是power negative,意思是电源消极,电源正极是power positive,意思是电源积极,即不代表实际意思也不好记忆
【回复】设计指针变量是为了节省内存空间,指针变量的巧妙使用可以减少内存中相同变量值的重复储存。
【回复】回复 @Xiagb :哈哈Webster就很好用,英文意思比较准确,当年考托和GRE神器
看我啊快看我:
良心up,三连了,up主要是淦一下我会很开心的[OK]

琦恩三九:
想起来一个梗,看谭浩强的书,要拿个打火机,哪里不会点哪里[doge]

【回复】看看别的入门书,再看看谭的,就会发现他老人家还是很仁慈的
焱尚祭:
现在计算机高级语言视频一大堆,但大多不从底层原理讲起,都是写一些炫耀知识的代码,工作中代码需要移植性强,可重复率高,可读性强的代码,这种别人一看不懂的东西是没多少人care的,转变学生的跟风和浮躁思维,踏踏实实从计算机四大基础知识和汇编语言开始学起,那些高级语言,数据库,接口技术,算法,嵌入式编程都是一通百通的,前提是计算机四大基础知识和汇编学好,而这些市场的人士却从来不说,都是搞得花里胡哨的,然后整些让人迷糊的东西来吸引眼球,于是割韭菜行为就到处蔓延,而学生是被割韭菜重点对象,有句话说得好,中国学生的钱最容易赚

【回复】回复 @花华青衣 :大学生最重要的其实不是自学能力,这个高中其实就已经有了,大学生任务是定道(职业方向)和社会辨识能力,之后的人生大部分时间其实都是理解什么是人生和社会而已,学习应该围绕解决问题而定,因为大部分知识是在大炮范围之内的,不可能穷尽。中国学生思维由于应试教育最后出了社会就知道你学了那么多知识没几个用得到,因为问题是千变万化的而不是固定的,学生时代的学习用来考试还行,解决问题的话还不够,需要自己结合实际整合知识结构来应对当下,这就是现在的中国学生欠缺的东西,刚好被市场也就利用了,特别是培训结构看得很清楚。 国外特别是美国学生,基本上学习和生活是混在一起的,高中初中时候就混社会了,也有很多移民学生,过得很苦逼的,中国家长为了自己儿女成龙变凤,将生活和学习环境隔离开来,最后反而将孩子送到了腐儒一种境地,除了钻了几个字进去了(还是少部分人),找到了自己的人生方向,大部分也就是浑浑噩噩的上着课,考试,到了三十岁还在迷茫的人
【回复】确实,,,会了汇编以后学这个指针跟玩一样。
【回复】计算机四大基础知识指的是哪些东西鸭?
平野店长:
提点小建议,up你在举例子说到的int a,int* p 这些变量的时候说了创建内存。个人觉得,这个说法不是很对。这些变量不管是临时还是全局,一般都是提前分配在一大块内存里的(全局变量在数据段,临时变量在函数栈帧)。不会存在运行到某个变量,程序分配给某个变量内存的说法。。。

【回复】临时变量为什么叫临时变量,不可能提前分配好
【回复】你可以自己看一下函数内SR指针的数值变化,也可以自己想一下临时变量提前分配内存的可能性,栈指针为什么会从栈底开始?什么是变量的声明与初始化?函数内中断会如何操作栈内存与SR。
SzzRain:
学了点java,表示挺好理解的,指针放在java里面就是一个变量,储存了一个地址值,而他本身也进了内存,所以他自己也有一个地址值,“*”就是取得指针储存的地址,“&”就是取得他自己的地址,是这样吧

【回复】*不是取值吗为什么还是地址,我又不理解了[大哭]
总-有-朕-想-害-刁-民:
本来还听你讲以前大概、可能、算是理解了一丢丢什么叫做指针,但是听你讲完又完全不明白了!唉![热词系列_打卡][热词系列_三连]

C语言 科技 教程 编程 指针 代码

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

更多相关阅读