C/C++编程笔记:C/C++中数组名的含义,不同数组名有不同的含义!

本文详细探讨了C/C++中数组名的多种语义,包括其作为char* const、char [n]等不同类型的表示。通过示例展示了数组名在不同场景下的行为,如作为指针、引用等,并分析了sizeof运算符的应用。文章旨在帮助初学者理解数组名的复杂性和使用时的注意事项。
摘要由CSDN通过智能技术生成

C/C++中的数组名是个很奇怪的东西,它到底代表什么呢?

对于char array[n](n是一个常数),大概有这么几种语义:

<1> char* const(注意不是const char*)   <2> char [n]

举例如下:

<1> char *p = array; //array表示char* const,p得到的是数组的首地址

    size_t size = sizeof(char [n]); // size等于n

 

<2> char (*p)[n] = &array; // array表示char [n],

// p得到的仍然是数组的首地址

char (*q)[n] = array;  // 编译错误

    char (*r)[n] = (char (*)[n])array; // r得到的是array数组的首地址

 

<3> char (&p)[n] = array;  // array表示 char [n]

 

<4> void foo(char a[n])

{

int size = sizeof(a);  // size == 4(32位系统),

// 因为a实际上表示的是char*

};

    foo(array);            // array表示char* const

 

<5> void foo(char (&a)[n]);

{

int size = sizeof(a);   // siz

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值