当前位置: 首页 > C, C/C++ > 正文

C指针小结1

                                            C指针小结1

     我认为C语言的核心就是指针和对内存的操作,而操作内存就是由指针实现的,所以说指针真的非常非常重要,在后边的数据结构的学习中更要用指针,如果你立志要走C系统的开发这条路,那么你就应当精通指针的各种应用。下面写一点博主在学习指针时的一点小心得,小体会(仅仅一家之言)。

   在刚学习指针时是真的一头雾水,感觉好难理解啊,这到底是个什么鬼?为何如此之难?不过在经过很长时间的纠结后博主还是有所体会。

指针:

        指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。

运算符* 和& ,“*”的意思是取出这个地址存储的内容,“&”的意思是取出存储这个值的地址(取地址符)

       例如:

                 int *a;

                这个a就是一个指针,此时a存储的是一个地址。

        指针的初始化:

                既然指针是一个地址,那么初始化时就应当赋给指针一个地址作为初始值。

                int *a;

                int b=5;

                a=&b;

                此时a的值为一个地址(这个地址是随机分配的),

                此时b的值为一个int型的常量5,此时*a的值正是5;

         现在就两个表达式进一步说明指针:

            int  c=4;

            int *p=&c;

          上边声明了一个int型常量c和一个指向int型的指针p。

           现在讨论赋值问题:

                    地址(&c),(&p),(++p),(p++)都是不能当作左值来赋值的。

                   地址中包含的内容(常量)(++*p),(*p)++,++*++p,也不能当作左值来赋值。

           指针同样可以进行算术运算,对它加上N,就等于它向后移动N个元素,当指针进行减法运算或者比较运算时(这两个或多个指针都要指向同一个数组中的元素);

             使用指针时应当注意的地方:

                1.错误地对一个未初始化的指针变量进行解引用。

                2.错误地对一个NULL指针进行解引用。

                3.向函数错误地传递了一个NULL指针。

                4.未检测到指针表达式的错误,从而引起错误。

                5.对一个指针进行减法运算,使它非法地指向了数组的第一个元素的前面的位置。

                6.小心使用++P和–P这类表达式,极有可能越界导致严重后果。

                

版权声明:本文为博主原创文章,未经博主允许不得转载。

]]>

本文固定链接: http://zmrlinux.com/2015/03/31/c%e6%8c%87%e9%92%88%e5%b0%8f%e7%bb%931/ | Kernel & Me

该日志由 root 于2015年03月31日发表在 C, C/C++ 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: C指针小结1 | Kernel & Me