为什么c语言指针那么难?

如题所述

指针确实难于理解。指针具有两个身份:

第一,指针本身是一个变量。只要是是变量,它就占用内存地址。当然如果没有分配内存地址,不在其内。

第二,指针包含一定的一个内容。指针所特殊的就是,他的内容保存的是其他变量的地址。

以上两点可以通过书中的示例7-7有比较好的体现。

例如,定义指针变量intp1。 intp1=&a 就表示 intp1保存的信息为a的地址。
而*intp1表示是intp1所保存地址的内存单元所保存的值,实际就是a的值。

所以,你给出的 *intp1=&a; 是一种不太合适写法。我们可以这样假设,再给一个变量b。令*intp1=b=&a,则
b=&a,说明b保存的a的地址,这样b就是一个指针。那*intp1=b,则说明 intp1所保存的地址指向的内存单元为b。所以,intp1可以看成a的指针的指针。

上面这个例子比较绕,慢慢想想,就理解了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-14
指针没什么难的好吧,其实指针的难点在于应用,可是有很多人在接触指针的时候首先会对指针的理解上感到困难。
首先呢,在C语言里面,一个程序里面的变量在内存里面是紧挨着的,而且每个变量的都有一个地址,所以这个地址也是紧挨着的,一般情况下,程序员使用十六进制来表示指针的地址比较方便。
我们可以通过(&变量)来得到变量的地址,并且可以把这个地址赋值给一个变量,当然也可以将这个地址传递给某一个子函数。
当一个子函数得到这个地址的时候,可以直接用(“%f”,被赋值某个变量地址的变量)来输出这个变量的地址,而且很厉害的一点就在于,我们可以通过(*被赋值某个变量地址的变量)来得到这个变量的值。

#include<stdio.h>

int zizhihanshu(int *f){ //这里就是一个子函数

printf("%p \n",f); //这里我们可以输出变量的地址
printf("%d \n",*f); //在变量前面加*号,我们就可以随时调用这个变量的值了,当然,这个指针f的值是f所指向的那个变量的值,指针f本身就是一个变量,指针变量f的值是所指向的那个变量的地址,指针变量f本身也有一个地址。

}

int main(){
int d = 155;
int ad = 2;
printf("%p \n",&ad); //在主函数里面,我们可以通过&变量来输出这个函数的地址
printf("%p \n",&d);

zizhihanshu(&d); //这里,我们直接给子函数返回一个地址

}
其次,可以用变量d和变量ad的地址用十六进制计算机减一下,你会发现,得到的结果是4或者是(-4),也就是说,一个整数变量在内存里面所占的字节为4个,同时也印证了,一个在代码里面紧挨着的被赋值的变量,在内存里面的地址也是紧挨着的。
&符,取地址
*符,将地址上的值反应出来

C语言的指针其实是很容易理解的,关键在于之后在实际操作中怎么灵活的运用指针。如果学到指针这个知识点的时候,进展不是很好的话,可以在网络上搜索一些关于内存方面的知识,这样可以帮助理解。
第2个回答  2013-09-08
指针是C语言的精华之一,在C语言中绝大多数要用到指针,通过指针来进行地址里面内容的操作是一种很重要的方法,固然重要,然而,重要与难度是一对无关变量,正如,有的知识很重要,它却很简单,有些知识很难,它却不重要,这种问题没有直接的关系,总之,只要是好好学,再难的知识也可以攻破,给你个C的Q群,欢迎一起加入学习67546170本回答被网友采纳
第3个回答  2013-09-08
因为你不会,会了就不难了

c语言哪个最难
总的来说,C语言的指针由于其抽象性、复杂性和与内存管理的紧密联系,被认为是C语言中最难掌握的部分。要想熟练掌握C语言,需要投入大量的时间和精力来理解和实践指针的相关概念和操作。

在c语言中,指针变量是通过地址间接取值,为什么要那么麻烦,把数据设成直...
指针比较有代表性的地方在于类似链表之类的地方。这里面通过指针把各个数据相连、排序。这里就无法利用直取值来替代指针了。

指针,很难吗?| 解析指针的过程与意义
在C语言中,指针不仅仅是内存地址的标志,它们还有助于理解内存管理、数据结构、函数参数传递等关键概念。通过指针,程序员可以实现动态内存分配、数组操作、结构体引用、函数调用等高级功能。掌握指针的使用,对于提高编程效率和解决复杂问题至关重要。本文旨在通过形象的类比,引导读者逐步理解指针的含义、应用...

c语言中指针好学吗,我听不懂但看题目好像很简单,能有人给我指点一下嘛...
在C语言中“指针表示的就是地址”,关键要弄清指针变量的指向,即指针指向的地址。然后用指针运算符“※”可以得到指针所指地址的值。打个比方:你要找到张三,张三的地址 = xx大厦xx单元2楼05号,指针就相当是“张三的地址”:"下标不从 0开始,如floor[1]door[2]表示第1楼的第2号的人"。张三...

在C语言中,到底是指针难 学还是算法难学?
并彻底了解指针的概念。但算法不同,没人敢说自己对所有算法都掌握并能熟练运用了。同样,在C语言中,对指针本身的研究基本停止了,毕竟这只是一个工具,就象没人肯研究锤子本身一样。人们主要研究的还是算法方法的东西。也就是怎么把工具用的更好。所以,算法难学 ...

为什么我总感觉自己学C语言不得要领? C Primer Plus我倒是感觉看的还...
学习语言,关键在于常练习,其实掌握一门编程语言不是要你把所有的语法都记住,而是给你一个题目,你能够真的怎么入手,知道怎么去找资料做出来!!!指针确实比较难懂,多找点题目练练吧!

关于C语言指针的问题
书上和很多专业人士都说,指针是C语言的主要特点,没掌握指针就没有入门。但我看那些C语言方面的程序题目,用到指针的地方并不多,我也知道指针就是地址,但不知道具体用法,请问,指... 书上和很多专业人士都说,指针是C语言的主要特点,没掌握指针就没有入门。但我看那些C语言方面的程序题目,用到指针的地方并不多...

为什么很多人觉得C语言只要学会了指针基本上差不多掌握这门语言?
只是在C语言学习道路上相对而言比较难理解的一块。毕竟从一个高级语言的角度去理解地址,比较抽象。作为一个高级语言,数据类型,流程控制,函数这些才是高级语言的重点。说差不多掌握这门语言,应该就是指的指针的难度,和学习的耗时。也对,也不对,学会指针只是入门了。位运算与文件学会才能写应用。只...

c语言指针怎么复习啊,太难了
总之指针是c语言的精髓,精通c语言的前提是精通指针。所以学好指针是必要的。哥哥想说的是,指针用得好,那么程序效率高,但是如果用得不好,或者滥用指针的话,就是像《杨贵妃秘史》里头说的那个小人李静忠一样,当时杨贵妃手软没杀那小子,然后皇上身边的公公收留用了他,结果真是后患无穷!!!当然...

C语言的指针是什么
(4)int (*ptr)[3]; \/\/指针所指向的的类型是 int()[3](5)int *(*ptr)[4]; \/\/指针所指向的的类型是 int *()[4]在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的“类型”这个...

相似回答