博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言学习笔记--数组指针和指针数组
阅读量:5134 次
发布时间:2019-06-13

本文共 2133 字,大约阅读时间需要 7 分钟。

C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定。(如 int array[5]类型为 int[5])

1.定义数组类型

C 语言中通过 typedef 为数组类型重命名:typedef type(name)[size];

(1)数组类型:如 typedef int (AINT5)[5]; typedef float (AFLOAT10)[10];

(2)数组定义:AINT5 iArray; AFLOAT10 fArray;

2.数组指针

(1)数组指针用于指向一个数组

(2)数组名是数组首元素的起始地址,但并不是数组的起始地址。

(3)通过将&作用于数组名可以得到数组的起始地址

(4)定义数组指针的两种方式:

    ①可通过数组类型定义数组指针:ArrayType* pointer;

    ②可以直接定义:type (*pointer)[n]; //其中 pointer 为数组指针变量名,type 为数组的元素类型,n 为数组的大小

#include 
typedef int (AINT5)[5]; //数组类型:int[5]typedef float (AFLOAT10)[10]; //数组类型:float[10]typedef char (ACHAR9)[9]; //数组类型:char[9]int main() { AINT5 a1; //定义变量a1为int[5]类型的数组 float fArray[10];//普通定义数组的方法 AFLOAT10* pf = &fArray;//合法。&表示取的是整个数组地址(相当于 //float[10]类型的数组指针。 ACHAR9 cArray; char(*pc)[9] = &cArray;//定义pc指针,并指向cArray数组。类型一致,合法。 //char(*pcw)[4] = cArray;//错误,数组名cArray为首元素的地址(相当于char*)与pcw指针类型不匹配 char(*pcw)[4] = (char(*)[4])cArray; int i = 0; printf("%d, %d\n", sizeof(AINT5),sizeof(a1));//4*5=20 for(i=0; i<10; i++) { (*pf)[i] = (float)i; //pf指向整个数组,即相当于&a。而*pf等价于(*&a),即相当于a //即*pf等价于数组名fArray,所以表达式相当于fArray[i] = (float)i; } printf("pf = %X, pf + 1 = %X\n", pf, pf+1); //pf + 1,指向数组最后一个元素的后面 for(i=0; i<10; i++) { printf("%f\n",fArray[i]);//打印0到9 } printf("%p, %p ,%p\n", &cArray, pc+1, pcw+1);//pc+1==>(unsigned int)pc + 1*sizeof(*pc) // ==>(unsigned int)pc + 1*9 //同理pcw + 1 = pcw + 4 return 0;}

2.指针数组

(1)指针数组是一个普通的数组,其中的每个元素为一个指针

(2)指针数组的定义:type* pArray[n];//其中的 type*为数组中元素的类型,pArray为数组名,n 为数组的大小(如 float* a[3])

#include 
#include
//sizeof(a)表示整个元素的大小//a表示首元素地址,*a即取出第1个元素#define DIM(a) (sizeof(a)/sizeof(*a))//table指向一个指针数组,即每个元素为指针类型int lookup_keyword(const char* key, const char* table[], const int size){ int ret = -1; int i = 0; for(i=0; i

 

参考资料:

www.dt4sw.com
http://www.cnblogs.com/5iedu/category/804081.html

转载于:https://www.cnblogs.com/CoderTian/p/5907895.html

你可能感兴趣的文章
解决录制视频播放正常,导入编辑软件后期编辑时声画不同步的问题
查看>>
IOS 在终端( Terminal )开发
查看>>
.NET平台下开源框架
查看>>
Mybatis注意事项
查看>>
android Dialog&AlertDialog
查看>>
如何实现一个php框架系列文章【2】实现类的自动加载
查看>>
js中(function(){…})()立即执行函数写法理解
查看>>
Humble Numbers(丑数) 超详解!
查看>>
游戏中敏感信息过滤
查看>>
计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法
查看>>
每周.NET前沿技术文章摘要(2017-05-10)
查看>>
AngularJS集合数据遍历显示
查看>>
sl学习疑问
查看>>
老李分享:android手机测试之适配(1)
查看>>
彻底理解position与anchorPoint - Wonderffee's Blog(转)
查看>>
C# 读取EXCEL文件的三种经典方法
查看>>
记错严格管理时间---记一次老师讲的学习方法
查看>>
02: DOM 实例
查看>>
nisi 脚本示例
查看>>
连接Linux服务器操作Oracle数据库
查看>>