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

C指针小结3

                                                  C指针小结3


       现在总结指针的更高一级的用法,其中指向函数的指针在我的博文中已经单独介绍过了,将会补充介绍几点,现在介绍别的指针的用法。
      首先介绍几个陷阱:
       int f()[];
       int f[]();
       这两个声明都是非法的,如果有人问这两个声明什么意思,我们应当不加思索的说出这是错误地声明,博主就曾经苦苦思考过这两个声明的意思,现在想想都觉得可笑。
             现在对于指向函数的指针补充几点:
         例如:
           int (*pf)(int)=&f;
          现在创建了一个函数指针,并把它初始化为指向函数f,其实初始化表达式的&操作符是可选的,因为函数名被使用时总是由编译器把它转化为函数指针。&操作符只是显示的说明了编译器隐式的执行的任务。
         函数名首先被转换为一个函数指针,该指针制定函数在内存中的位置。
         除了函数指针还有一个重要的用法就是转化表。就是使用void进行泛型的计算。
         我的博文void与泛型计算已经比较清楚的说明了这一问题。
         指针最后一个高级应用实例就是命令行参数的使用,也已经介绍过了。
现在介绍关键字const.
       const可以创建数组常量,指针常量,以及指针常量的指针。
       通常把指向常量的指针用作函数参量,以表明函数不会引用这个指针来修改数据。
        void show_array(const  double *ar ,int n)
         关于指针赋值和const有一些规则要注意,首先将常量或非常量数据的地址赋给指向常量的指针是合法的。
          int rates[10]={0};
          const double *p=rates;
        然而只有非常量数据的地址才能赋给普通指针:
         const double a;
         p=a;非法 
         double *p=rates;合法
         声明一个指向固定的地址的指针:
         double *const p=rates;这个指针指向数组的第一个元素的地址并且不能改变。
         可以使用两个const来进行声明:
         const double *const p=rates;不可以修改指针的值和指针指向的内容。

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

]]>

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

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