我试图理解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) 我知道C中的数组只是指向顺序存储数据的指针.但是,差异意味着符号[]和*的区别.我的意思是在所有可能的使用环境中 例如:
char c[] = "test";
Run Code Online (Sandbox Code Playgroud)
如果在函数体中提供此指令,它将在堆栈上分配字符串
char* c = "test";
Run Code Online (Sandbox Code Playgroud)
将指向数据(只读)段.
您是否可以在所有使用情境中列出这两种表示法之间的所有差异,以形成清晰的一般视图.