c++ - 如何理解 foo(char (&p)[10]) ?

标签 c++

#include <iostream>

void foo(char (&p)[10]) {
    printf("%d\n", sizeof(p));
}

char p[10] = "aaa";

int main() {
    foo(p);
}

该代码输出10,但我无法理解。

这里的char (&p)[10]是什么意思?

最佳答案

foo() 被声明为一个函数,专门获取对大小为 10char 数组的引用,没有任何 array-to - 发生指针转换。

由于 sizeof(char) 为 1,因此 sizeof(char[10]) 为 10。这就是您的程序打印 10 的原因。

关于c++ - 如何理解 foo(char (&p)[10]) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063454/

相关文章:

c++ - 如何定义一个地址为空的对象?

c++ - 在 WinMain 外部使用 CreateWindowEX 函数时,如何获取它的 HINSTANCE?

C++——在这种情况下,编译器可以推断出类型

c++ - 如何调用指向函数指针的指针?

C++ 将字符串日期 (1/4/2000) 转换为整数日期 (20000104)

c++:定义可以用作可增长数组的函数

c++ - 什么时候应该在字符数组上使用 std::string?

C++数组的动态大小

c++ - 从 Thrust::device_vector 到原始指针并返回?

c++ - C++ 中#define 宏扩展的行为