相关疑难解决方法(0)

何时数组名称或函数名称"转换"为指针?(在C中)

1) 误解:

  • 每当用C语言声明数组时,都会隐式创建指向数组第一个元素的指针(数组的名称).(是吗?我不这么认为!)

  • 这个页面的前两行(虽然我不确定信息的正确性)说明相同.

    正如我们所看到的,当我们声明一个数组时,为数组的单元分配了一个连续的内存块,并且还分配了一个指针单元(适当类型)并初始化为指向数组的第一个单元.

  • 但是,当我输出包含的地址该指针和地址该指针,就变成是相同的.所以,我认为毕竟不会创建指针.

2)我从这个问题中选了这个.

  • 在大多数情况下,数组名称将转换为指针.

任何人都可以详细解释编译器何时决定数组名称转换为指针,为什么

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)

c arrays pointers function-pointers function

17
推荐指数
1
解决办法
2745
查看次数

如何在C中打印变量的地址?

我尝试打印地址的值,它会产生错误.

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)

c

0
推荐指数
1
解决办法
2198
查看次数

标签 统计

c ×2

arrays ×1

function ×1

function-pointers ×1

pointers ×1