一、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、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

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

 

C语言:指针的几种形式二的更多相关文章

  1. C语言:指针的几种形式

    字符串的两种形式: 1.字符数组       char name[32] = “zhangsan”;//只能在初始化时这样做       strcpy(name,”lisi”);//整体赋值只能通过s ...

  2. const与指针的三种形式

    使用指针时涉及到两个对象:该指针本身和被它所指的对象. 将一个指针的声明用const"预先固定"将使那个对象而不是使这个指针成为常量.要将指针本身而不是被指对象声明为常量,必须使用 ...

  3. C语言指针使用小记 (深入理解C指针 读后小记)

    最近正值过年在家,新年初一,闲暇时间无事可做便把以前看过的书籍整理了一下,顺手也把这本“深入理解C指针”的书重新读了一遍,这本书总体感觉比较简单,但是还是不免有些地方是平时没有想到过或者没有注意到的, ...

  4. C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

    1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...

  5. C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数

    1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...

  6. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  7. 事件绑定、取消的二种形式 & call

    <script> //call 函数下的一个方法,call方法第一个参数可以改变函数执行过程中的内部this的指向,call方法第二个参数开始就是原来函数的参数列表. function f ...

  8. C语言指针与数组的定义与声明易错分析

    部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告 ...

  9. c语言指针详解(转载)

    转自(http://blog.csdn.net/ad_ad_ad/article/details/1522145) 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指 ...

随机推荐

  1. Log4Net学习【三】

    Log4Net配置详解 配置方式一 在相应的应用程序的配置文件中配置,(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例是Web应用程序,以Web.co ...

  2. Android -- 距离感应器控制屏幕灭屏白屏

    权限                                                                                             <u ...

  3. C#开源系统大汇总(转)

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  4. SQL中的5种聚集函数

    作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我 ...

  5. EasyUI 在aspx页面显示高度不正常解决办法

    <body class="easyui-layout"> <form id="form1" runat="server"& ...

  6. Careercup - Microsoft面试题 - 5428361417457664

    2014-05-11 03:37 题目链接 原题: You have three jars filled with candies. One jar is filled with banana can ...

  7. hibernate3连oracle的各种坑。。

    坑一:驱动错误导致sql查询不了,升级驱动到最新版即可 2.通过构造函数封装数据时,如果报错无法实例化并且不是因为字段不对应导致的,可以试试把float改为Float之类的包装类

  8. EF:Invalid column name 'Discriminator'.

    错误信息: InnerException: System.Data.SqlClient.SqlExceptionHResult=-2146232060Message=Invalid column na ...

  9. 【CodeForces】【311C】Fetch the Treasures

    最短路 神题一道…… //CF 311C #include<queue> #include<cstdio> #include<cstdlib> #include&l ...

  10. spring.net +dapper 打造简易的DataAccess 工具类.

    public class DBUtil { /// <summary> /// 数据库连接字符串 /// </summary> private static string Da ...