指针 (1)--数组与指针

一、 数组

一维数组

int states[20];  //创建内含20个int型元素的数组
char chs[15];  //创建内含15个char类型元素的数组
int pow[3] = {1,2,3} //声明并初始化pow数组
int qw[4] = {1,2}

方括号[]表示states 、chs是数组。其中的数字表明数组中含有多少个元素。
通过数组下标数(也成为索引)表示数组中的各元素,元素编号从0开始。要防止数组下标超出边界,即必须确保下标为有效的值。C 标准中使用越界下标的结果是未定义的(编译器不会检查这种错误)。
初始化,元素不足时,缺少的元素会自动初始化为0;元素过多时,会出错。

多维数组

以二维数组为例:

float rain[5][12]; /*内含5个数组元素的数组,每个数组中含有12个float类型的元素*/
int pp[2][3] = {{1,2,3}{4,5,6}} //声明并初始化数组

初始化,元素不足时,缺少的元素会自动初始化为0;某一行的元素过多时,该行会出错,但是不会影响其他行的初始化。
计算机中,多维数组的数据是按顺序储存的。

二、 指针

指针(pointer)是一个值为内存地址的变量。指针的值是它所指对象的地址。
指针加1,指针的值递增一个它所指类型的大小(以字节为单位)。
int * ptr ; // 声明一个指向int类型的指针。*表示声明的是个指针。
ptr = &p; //把p的地址赋给ptr, 读作“ptr 指向 p”

指针与数组的联系

指针能有效的处理数组。数组表示的方法其实在变相的使用指针。
可以使用指针标识数组的元素和获得元素的值,指针和数组可以视为一个对象的两种表示方法。
实际上,C语言标准在描述数组表示法的时候借助了指针。定义ar[n]的意思是*(ar+n),表示到内存的ar位置,然后移动n个单元,检索储存在那里的值。
编译器编译这两种写法生成的代码相同。
数组名是数组首元素的地址
假设pow为一个一维数组,那么有
pow == &pow[0];

#include <stdio.h>
int main()
{
int dates[3] = {1,2,3};
int * ptr = &dates[0];
printf("%d",ptr == dates);
}

输出为 1 。
那么
ptr+2 == &dates[2];
*(ptr+1) == dates[1];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值