首页 / C语言 / C语言小结-数组和指针
C语言小结-数组和指针
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言小结-数组和指针,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1639字,纯文字阅读大概需要3分钟。
内容图文
数组:
声明方法:
1.datatype arr[]={0}; //个数由{}内元素个数决定
2.datatype arr[N]; //N必须大于0
3.datatype arr[N]={1,2,3}; //{}内个数不能超过N;若个数小于N,则未初始化的元素默认为0
4.datatype arr[5]={1,2,[4]=2,3,[1]=0}; //其元素为:1,0,0,2,3
5.若N为变量,则arr[N]为变长数组,声明时不允许初始化。
6.复合字面量:(datatype [N]){1,2,3}; //N可为空;复合字面量必须声明(创建)的同时使用它
数组的一种理解:一种数据类型——datatype []
多维数组:
声明方法:datatype arr[row_number][column_number]; //row_number可以为空,但是column_number必须填写
多维数组的一种理解(结合指针):
设 datatype arr[n][m],则arr[n][m]表示的数据类型为储存nxm个datatype数据的(二维)数组;arr[]表示的数据类型为储存n个arr[m]数据的数组。由此可视二维数组为“两层”:第一层储存datatype类型数组arr[],这一层面的指针操作为*(arr(首元素地址)+i),表示arr[i][];第二层储存datatype数据arr[][],这一层面的指针操作为*(*(arr+i)+j),表示arr[i][j]。
对应关系:arr——地址(m*datatype)
arr+i——地址(m*datatype)
*(arr+i)——地址(1*datatype)
*(arr+i)+j——地址(1*datatype)
*(*(arr+i)+j)——datatype数据
参考图片(来自C Primer Plus):(zippo为数组名)
数组和指针:
联系的关键:地址
??地址的“宽度”由数据类型决定。如int—4 bits。因此对地址进行操作运算,如+,-时,产生的数值变化是以其“宽度”为单位变化的。
1.数组名是数组首元素的地址 //arr=&arr[0]
2.指针的一种理解:一种数据类型——datatype * //设datatype *p,则p表示一个指向datatype类型的指针,对应的是地址;*p 则是对指针的解引用,对应的是datatype类型的数据;&p则表示指针自身的地址,与*p不同。
3.指针表示和数组表示:
一维数组:arr[i]==*(arr+i)
二维数组:arr[i][j]==*(*(arr+i)+j)
4.指针之间的赋值必须两者指向相同类型
5.指针操作:(基于运算符*和++优先级相同且结合律从右往左)
p++:指针指向下一个元素
*p++ == *(p++):指针指向下一个元素(下次引用时实现)
(*p)++:*p的值+1(下次实现)
++*p == ++(*p):*p的值+1(本次实现)
*++p:指针指向下一个元素(本次即实现)
指针数组和数组指针:
区别的原因:[]运算符的优先级高于*运算符
数组指针的声明:datatype (*p)[n]; //p是一个指向(储存n个datatype数据的数组)的指针
(操作:可向其赋值数组名,其他操作与指针&数组表示法一致
指针数组的声明:datatype *p[n]; //p是一个内含(n个datatype类型指针)的数组
函数形参:
指针形参和数组形参可以通用:datatype Function(datatype *arr/datatype arr[])
调用时传入数组名或指针:Function(arr)
??若要在该调用函数中改变主函数的变量,则须传入指针。
原文:https://www.cnblogs.com/ruanzy/p/12863474.html
内容总结
以上是互联网集市为您收集整理的C语言小结-数组和指针全部内容,希望文章能够帮你解决C语言小结-数组和指针所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。