zoukankan      html  css  js  c++  java
  • C语言:指针的几种形式二

    一、const指针

    1、const int* p和int const* p:两者意义是相同的。指向的内容是只读数据,不可以q改变;但是指向的地址可以改变。
    2、int* const p:必须先对指针初始化,而且指向的地址是只读的,不可以再被改变;但是指向的内容可以改变。
    3、const int* const p:既不可以改变指针指向的地址,也不可以改变指针指向的内容。
     
    二、指针数组:元素类型全是指针
    类型名称*数组名[数组长度]
    例如:
       char* pc[10]:字符指针数组,常用来可以表示一个字符串
     
    三、数组指针:指针指向数组名
    类型名称(*指针名)[数组长度]
    例如:
       int a[5] = {1,2,3,4,5};
       int (*temp)[5] = &a; //temp指向的是整个数组
    注意:
       1、定义指针时()不能丢掉,因为[]优先级比*高,若丢掉,就会变成指针数组。例如:int *temp[4]//数组4个元素都是int*。
       2、数组长度、元素类型必须与指针定义时给出的长度、类型相同。
     
    四、函数指针
    数据类型(*指针变量名称)(形式参数列表)
    本质:函数放在代码区,函数指针指向代码区,通过函数指针可以访问代码区中的内容。括号()不可以省。。。
    例如:float (*p)(float a,float y):float类型指针函数
         float* p(float x,float y):函数p返回值为float指针类型
     
    五、总结数组与指针的区别:

    1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
    2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是"可变",所以我们常用指针来操作动态内存。
    3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 

    因为第三条,当把数组名作为函数的形参进行传递时,该效果等同于传递一个同类型的指针。直接在程序当中调用 函数名(数组名)即可。

     
  • 相关阅读:
    查看本机安装了哪些.Net Framework版本的方法
    tomcat启动超时, Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...
    设置PL/SQL Developer 字符集
    JDK安装与环境变量配置
    function 与 => 的区别
    如何使用tomcat,使用域名直接访问javaweb项目首页
    Spring整合Struts2
    Oracle to_char函数的使用方法
    PLSQL 误删表恢复操作
    Python可视化动态图表,基于Python环境,使用jupyter notebook编辑ipynb文件,基于pyecharts生成Sankey的桑基图HTML制作
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4887949.html
Copyright © 2011-2022 走看看