指针与数组


int main()
{
char a[5]={'A','B','C','D'};
char (*p3)[5] = &a;
char (*p4)[5] = a;
return 0;
}


p3这个定义的“=”号两边的数据类型完全一致,

而p4这个定义的“= ”号两边的数据类型就不一致了。

左边的类型是指向整个数组的指针,右边的数据类型是指向单个字符的指针。

p3+1的值会是什么?p4+1的值又会是什么?


C 语言中,当一维数组作为函数参数的时候,编译器总是把它解析
成一个指向其首元素首地址的指针。这条规则并不是递归的,也就是说只有一维数组才是
如此,当数组超过一维时,将第一维改写为指向数组首元素首地址的指针之后,后面的维
再也不可改写。比如:a[3][4][5] 作为参数时可以被改写为(*p)[4][5] 。


用malloc 函数申请0 字节内存会返回NULL 指针吗?
可以测试一下,也可以去查找关于malloc 函数的说明文档。申请0 字节内存,函数并
不返回NULL,而是返回一个正常的内存地址。但是你却无法使用这块大小为 0 的内存。这
好尺子上的某个刻度,刻度本身并没有长度,只有某两个刻度一起才能量出长度。对于这
一点一定要小心,因为这时候if (NULL !=p)语句校验将不起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值