数组与指针4

1.数组(array)由一系列类型相同的元素构成,数组声明中包括数组元素的数目和元素的类型。

2数组初始化 :1用花括号括起来的一系列数值来初始化数组.数值之间用逗号隔开,可以使用const来修饰数组,这样程序会把数组中的每个元素当成常量来处理。

  未经初始化的数组,其数组元素的数值是不定的。编译器使用的数值是存储单元中已有的数值。如果部分初始化数组,未初始化的元素则被设置为0.

   指定初始化数组有两个重要特性:第一如果在一个指定初始化项目后跟有不止一个值,则这些数值将用来对后续的数组元素初始化,第二,如果多次对一个元素进行初始化,则最后一次有效。

3.C不支持把数组作为一个整体来进行赋值,也不支持用花括号括起来的列表形式进行赋值(初始化的时候除外)

4 数组名是一个地址常量,数组名同时也是该数组首元素的地址

5  在C中,对一个指针加1的结果是对该指针增加一个存储单元,对于数组而言地址会增加到下一个元素的地址,而不是下一个字节

6指针   :指针的数值就是它所指向的对象的地址。在指针前运用运算符 * 就可以得到该指针所指向的对象的数值。对指针加1,等价于对指针的值加上它的对象字节的大小

   short  dates[50];  

  dates+2==&dates[2]  /*相同的地址*/

  *(dates +2)==dates[2]  /*相同的值*/    注意一下区分*(dates+2)/*dates的第三个元素的值 */   和 *dates+2   /*第一个元素的值和2相加 */    ,间接运算符(*)的优先级高于+ ,因此后者等价于(*dates)+2.

7  一元运算符 * 和++有相同的 优先级,但它的结合的时候是从右向左进行的,  如 *test++, ++应用于test,而不是*test,也就是说是指针自增1,而不是指针所指向的数据增加1


8  转载的    int *a[10] :数组指针.数组a里存放的是10个int型指针
               int (*a)[10] :a是指针,指向一个数组.此数组有10个int型元素
               int *a[10]
先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *.所以这是一个存放int指针的数组.
int(*a)[10]
先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看,是*,说明s是个指针,什么指针?在看括号外面的,先向右看,有[] 是个数组,说明a是个志向数组的指针,再向左看,是int,说明数组的每个元素是int.所以,这是一个指向存放int的数组的指针.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值