为什么作为参数发送的数组的大小与main中的相同?
#include <stdio.h>
void PrintSize(int p_someArray[10]);
int main () {
int myArray[10];
printf("%d\n", sizeof(myArray)); /* As expected, 40 */
PrintSize(myArray);/* Prints 4, not 40 */
}
void PrintSize(int p_someArray[10]){
printf("%d\n", sizeof(p_someArray));
}
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)
将指向数据(只读)段.
您是否可以在所有使用情境中列出这两种表示法之间的所有差异,以形成清晰的一般视图.