我试图理解C中的指针,但我目前对以下内容感到困惑:
char *p = "hello"
Run Code Online (Sandbox Code Playgroud)
这是一个指向字符数组的char指针,从h开始.
char p[] = "hello"
Run Code Online (Sandbox Code Playgroud)
这是一个存储hello的数组.
将这两个变量都传递给这个函数有什么区别?
void printSomething(char *p)
{
printf("p: %s",p);
}
Run Code Online (Sandbox Code Playgroud) #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?