数组与指针

来源:互联网 发布:wow.js下载 编辑:程序博客网 时间:2024/06/02 06:51

数组:

1.一组有序数组的集合

2.数组中的每一个元素都属于同一类型

定义一个数组:  类型符  数组名[常量表达式]

例如  int  a[10];  

定义了一个长度为10个整型空间  数组名为 a 的数组

注意事项: 常量表达式 有四个要求

         1.不能为变量2.必须为整型3.正整数4.必须给值(否则无法编译)

          错误: int  n=1;     正确  const  int  n=1;

                     int a[n]={1} ;      int a[n]={1};

          int  a[5]={};  系统填充0,若没有{},则 填入随机值

          int  a[5]={1,2,3,4,5};

          int  a[5]={1,2,3};

          t=a[0];表示引用数组中的第一个元素,以此类推(起始下标都是0)

         在sizeof(a)中 数组名代表代表整个数组大小   后面则代表数组首元素的地址

         int a[]={1,2,3};

         sizeof(a); //40

         n=sizeof(a)/sizeof (a[0]);//n为数组中元素个数,sizeof(a[0])为一个元素的大小


指针 :

想通过指针来引用元素,一般就需要该元素的的地址,如若想通过指针引用数组,就需要该数组元素的地址(所谓的数组元素的指针就是该数组元素的地址)

可以用一个指针变量指向一个数组元素

int a[5]={1,2,3,4,5};

int  *p;

p=&a[0];

以上是指针变量p指向a数组的首元素

引用数组元素可以用下标法(a[2]),也可以指针法即通过指向数组元素的指针找到所需元素。使用指针能使目标程序质量高既占内存少,运行速度快。即采用*(a+i)或*(p+i)形式,用间接访问的方法来访问数组元素,其中a是数组名,p是指向数组的指针变量,其处值p=a。
 

int *a[5]; 定义一个5个元素的指针数组,数组元素为指向int型变量的指针变量
char *a[10]; 定义一个10个元素的指针数组,元素为指向char型变量的指针变量
不论指针数组是什么类型,指针数组的每个数组元素都用来保存一个地址值,在C语言中,每个数组元素是一个int型变量,占用4个字节。


* (a+i) 和* (p+i)是等价的,引用的同一个数组元素 

在C语言中,数组名代表的是数组中首元素的地址。在程序编译时,a[i]是按*(a+i)处理的,即按数组元素的首地址加上相应位移量i找到新元素的地址。而p=a,即p是指向数组a的首元素的地址,因此是等价的。从这里可以看出,[ ]实际上是变地址运算符,即将a[i]按a+i计算地址,然后找此地址单元中的值。 
 

p[i] 和* (p+i)是等价的,引用的是同一个数组元素。

当指针变量指向数字元素时,指针变量可以带下标。而在程序编译时,对此下标处理的方法是转换为地址,即对p[i] 处理成 (p+i)。同上,[ ]是变址运算符。



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的世界左右慢怎么办 发电机自动启停装置故障怎么办 如果自动启停没关发动机涉水怎么办 偏激的人不分手怎么办 被极端的人纠缠怎么办 对固执偏激的人怎么办 车子右前轮偏磨怎么办? 轮胎边缘磨黑了怎么办 36周胎儿绕颈一周怎么办 孕中期胎儿偏小怎么办 怀孕34周偏小2周怎么办 胎盘低怎么办6个月了 怀孕四个月胎盘低怎么办 怀孕五个月胎盘低怎么办 怀孕3个月胎盘低怎么办 怀孕三个月了胎盘低怎么办 新房交房开发商拿不出证件怎么办? 新干式变压器未送电进水怎么办 三相380转单相220怎么办 外国人一直找你出去怎么办 美团众包跑腿单物品太重怎么办 美团退款成功后 物品怎么办 win10电脑没有网络图标怎么办 电脑开机桌面什么都没有怎么办 xp桌面什么都没有了怎么办 手机下滑通知栏不见了怎么办 跑800米赶上月经怎么办 强迫症吃药没效怎么办 复读生档案丢了怎么办 大学退学重新高考学籍怎么办 玻尿酸鼻子宽了怎么办 被昆山市圆通快递公司骗怎么办 借壳上市后壳公司怎么办 盐城国有民办学校倒闭教师怎么办 联想复印机显示更换墨粉盒怎么办 襄垣县共公自行车卡怎么办 转南京江宁户口怎么办儿童医保 剑与家园鬼服怎么办 花生苗出现虫洞怎么办 被蝎子草扎到手怎么办 被蝎子草蛰了怎么办