C语言细节之五:数组和指针
2010-05-23 09:05
218 查看
1、注意:类型T的指针和类型T的数组名并非同一个类型。
例如:char a[6] 与 extern char *a并不能匹配2、char a[] 与 char *a是不一样的。
例如:char a[6]请求预留6个字符的位置,并用“a”表示,实际是说有一个称为“a”的位置,可以放入6个字符。sizeof(a)为6,但是:如果把a做实参,在被调用函数用对形参做sizeof,就只取得到形参指针变量本身的长度(4个字节)而char *P是请求一个位置放一个指针变量,名称为P。
3、作为函数形参,char a[]实际上与char *a等价
数组根本就不能传入函数,只是允许用形参a作为一个指针去访问原函数中数组的元素。所以函数声明void f(char a[])与void f(char *a)是等价的,a[]是作为指针a处理的。4、数组和指针的区别
(1)数组空间固定,指针可动态分配(2)sizeof数组为数组长度(函数形参数组例外,因为形参数组实际就是指针),sizeof指针总是指针变量自身长度
5、声明一个数组指针
指向整个数组的指针:int (*ap),但是毫无用处
6、动态分配多维数组的方式
可使用一维数组来模拟也可使用数组指针7、当数组是函数的参数时,sizeof不能正确报告数组大小因为此时数组参数当作指针对待。
相关文章推荐
- 程序猿之---C语言细节30(数组和指针操作测试题,你能全答对吗??)
- 程序猿之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]很可能你没见过)
- 程序猿之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]很可能你没见过)
- 程序员之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)
- 程序猿之---C语言细节1(==与=、函数指针、数组字符串printf、int ((b));、char b =‘abcd’)
- 程序员之---C语言细节12(指针和数组细节,"//"的可移植性说明)
- 程序猿之---C语言细节12(指针和数组细节,"//"的可移植性说明)
- 程序猿之---C语言细节30(数组和指针操作测试题,你能全答对吗??)
- c语言 数组 指针
- C语言day3(字符串,字符数组,一级指针的典型用法)
- 【C语言复习(十七)】多维数组和多维指针
- 对C语言中的字符串,字符数组以及用指针表示字符串的理解
- 再谈C语言中数组和指针之间的互操作
- [转]对于C语言中指针和数组的认识和看法
- c语言指针数组与数组指针
- C语言使用指针访问数组
- c语言中数组和指针的区别与联系
- 浅谈C语言 extern 指针与数组
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
- c语言学习零碎整理(7):数组名是指针吗?(补)