C语言指针数组

指针数组

定义如下数组:

char *a[ ] = {"China","French","America","German"}

那么a的长度是多少呢?

   sizeof(a) = 16

因为a表示的是地址,是上面定义的数组的地址,可以看到 *a[ ]用逗号分隔了4组,假设当前计算机地址为32位(即4个字节),相应滴,a的长度就是16字节了。
上面说到a表示的是地址,因此a[1]、a[2]并非表示字符串本身,而是值存储字符串的地址,如下:

#include <stdio.h>
   int main()
   {
    char *a [ ] = {"China","French","America","German"};
    printf("%p %p %p %p\n",a[0],a[1],a[2],a[3]);
    return 0;
   }

输出>>:

00422FB8 00422FB0 00422FD0 00422020
Press any key to continue

可以看到,当前的数组存储的是地址,另外,这些地址本身并不连续,由编译器自动分配,不要想当然。

原文出处(更详细,请参考)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值