#include <stdio.h>
#define N 10
char str2[N]={"Hello"};
int main(){
printf("sizeof(str2): %d bytes\n", sizeof(str2));
printf("sizeof(&str2): %d bytes\n", sizeof(&str2));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
sizeof(str2): 10 bytes
sizeof(&str2): 4 bytes
Run Code Online (Sandbox Code Playgroud)
我知道str2单独是数组中第一个元素的地址str2.并且当str2它的参数何时sizeof返回整个数组str2的大小.
另外,&str2也是arr中第一个元素的地址,str2但是来自不同的类型(char (*)[N]==指向数组的指针).但是&str2当它是一个论证时,它是如何表现的sizeof?
我有我认为应该是一个非常简单的代码片段,但我无法编译,因为我不明白的原因.
以下简化代码将无法编译:
char buffer[9] = "12345678";
char* pBuffer = &buffer;
Run Code Online (Sandbox Code Playgroud)
编译器(g ++)抛出以下错误:
error: cannot convert 'char (*)[9]' to 'char*' in initialization
C++并不完全是我的"原生"语言,但我看过的每个地方都告诉我这应该有用.非常感谢任何想法或建议.