1) 误解:
每当用C语言声明数组时,都会隐式创建指向数组第一个元素的指针(数组的名称).(是吗?我不这么认为!)
这个页面的前两行(虽然我不确定信息的正确性)说明相同.
正如我们所看到的,当我们声明一个数组时,为数组的单元分配了一个连续的内存块,并且还分配了一个指针单元(适当类型)并初始化为指向数组的第一个单元.
但是,当我输出包含的地址在该指针和地址的该指针,就变成是相同的.所以,我认为毕竟不会创建指针.
任何人都可以详细解释编译器何时决定将数组名称转换为指针,为什么?
PS:请解释一下功能.此外,在这个环节中,已经给出,说是一个函数int square(int,int),任意 square,&square,*square,**square是指同一个函数指针.你可以解释吗?
编辑:代码段
int fruits[10];
printf("Address IN constant pointer is %p\n", fruits);
printf("Address OF constant pointer is %p\n", &fruits);
Run Code Online (Sandbox Code Playgroud)
输出:
Address IN constant pointer is 0xbff99ca8
Address OF constant pointer is 0xbff99ca8
Run Code Online (Sandbox Code Playgroud) 我尝试打印地址的值,它会产生错误.
int main()
{
int arr[] = {10,20,30,40,50,60};
int *ip;
ip=&arr[3];
printf("%u",ip);
return 0;
}
Run Code Online (Sandbox Code Playgroud)