1. 为什么都说c语言中的指针很难理解
楼主有这闲心讨论这个问题,不如把这些精力放在理解C语言指针上。
讲真,懂指针的程序员和不懂指针的程序员,完全是两个档次。
2. 需要学指针吗
必须学啊 c#虽然不用指针 不过类的引用可以说就是对指针功能的一个简单实例 就是功能上没C++ C那么强大了 可是理论还是指针的理论
3. 听说C语言的指针学起来很难求指教.
你把指针看成一般变量就行了,只不过类型是指针型的,就像整型变量是整型一样。
一般变量存放的数值,而指针变量存放的是地址,如把存放数值的内存空间看做房间,地址就是门牌号码,指针变量就是记录了门牌号的纸条,用指针就能找到房间,从而得到里面的数值。
所以,你直接用指针变量,得到的是一个地址,前面加一个*就是取这个地址里的值。
另外,和其它变量一样,指针的值是可以改变的,你可将同类型数据地址赋值给同一个指针变量。
4. 老师说指针以后用不到,这是真得吗
老师说的是指针的副作用,自己编程,少用指针。
至于说“以后用不到”那是针对未来的计算机语言。其实过去的 ALGOL 语言,FORTRAN 语言等,也都不用指针。
可是现在的C语言,有些地方不得不用指针,例如函数参数,如果要把函数结果通过参数带回,必须用指针。C语言编程怎么能不用函数呢,许多常用库函数就用指针,所以不会指针,就等于不会C语言编程。
5. C语言为什么那么难学尤其是指针 据说能绕死人
绕死人的部分一般是出现在考试和算法研究中,普通应用你自己不会给自己挖大坑的,别人的程序也不会过于复杂。所以,你如果不为应付考试的话,对难的部分先浅尝一下绕过去,把c大部分都掌握了之后再回头根据需要提高即可。
其实,指针这部分并不难,需要你勤动手、画图,一般都能清楚,因为计算机也是一步一步执行程序的,当自己是计算机,一步一步地记录和运算,没有不能解决的问题。
6. 做java程序员是不是可以忽略忘记c的指针,以及底层链表树等数据结构内容。
可以忽略c的指针,但是链表数据结构还是不要忽略,java中经常会用到;
7. 初学者学C语言——指针不懂
1、所有字符数组都是指针,字符数组也就是一个字符串
2,4、该定义是一个数组的数组,所以它的顶级数组的某个元素也是指针和字符串
3、字符串(指针)取值,即那个*号,取得的是一个字符,所以它不是字符串
char
s[n][m]定义了n个char*的指针,指向n个字符串,每个字符串有m个字符(n个长度为m的一维数组).
char
s[3][3];定义了3个char*指针(s[0],s[1],s[2]),分别指向一个字符串,字符串长度为3.
s是指针,s==s[0](但*s!=*s[0]),
s[0]指向第一个字符串(s[0]是char*型,所以*s[0]是一个字符),那就选C吧.
数组是指针吗?
int
a[1][2]={3,4};
printf("%d\n",*0[a]);
//输出3
8. 为什么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的指针的指针。
上面这个例子比较绕,慢慢想想,就理解了。
9. 学C++编程突然冒出的两个问题
第一个问题,在面向对象的语言中,一切以类和对象为基础,使用指针会造成这种机制的破坏。比如,一个通过get和set方法才能读取的对象属性,可以直接通过指针来修改,这就破坏了面向对象的封装机制。因此,使用C语言可以大量使用指针,但是面向对象语言尽量少用,这也是为什么在Java里根本就没有指针的原因。
第二个问题,你这里所说的程序速度不是真正的程序执行速度,而只是体验速度,和面向过程、面向对象没有关系,而是和程序的编译、运行机制有关,比如编译运行在什么环境,载入了多少标准库、外部函数,需要什么其他的环境基础执行命令操作等等。Java和C#本身有自己的运行环境,java在虚拟机中,C#在.NET框架中。这些运行环境在启动程序之前、运行过程中、以及程序结束之后还要做很多工作,比如设备调节、内存管理、垃圾回收等等。所以,在执行小程序的时候这些工作也要做,显的速度慢,而C程序则非常简单直接,只执行你的程序代码而已。
真正的程序速度是指程序的指令速度,通常记为O(x)的形式,俗称大O表示法,其中的x可以是任何与程序指令数量有关的函数,比如常见的n平方,logn等等。这个速度才是程序真正的速度,是用来提高代码运行效率的一种计算手段。