如何使用地址在函数中创建新变量

时间:2020-10-30 12:59:53

标签: c function variables

当我使用主数组的基地址创建一个新数组时,我会这样写:

message                  level          logType   timeStamp
Killing processes...     Information    User      2020-10-19T10:07:49.1386035+02:00
Opening applications...  Information    User      2020-10-19T10:07:49.4092373+02:00

为什么尝试使用这样的地址创建新的int变量时不能做同样的事情?

main()
{
    int a[]={0,1,2,3,4,5,6,7,8,9};
    display(a);
}

display(int anew[])
{
    int i;
    for(i=0;i<10;i++)
        printf("%d ",anew[i]);
}

2 个答案:

答案 0 :(得分:1)

因为display(int anew[])display(int *anew)相同,但是display(int *b)display(int b)不同。在C语言中,当传入函数时,数组会“退化”为一个指针(指向第一个元素)。整数(只有数组和函数)不会发生这种情况。

答案 1 :(得分:1)

在下面的行中,您正在将a的地址传递给显示功能。这将无法正常工作,因为display(int b)期望的参数类型为int

display(&a); // should be replaced by display(a)

如果要通过发送其地址在显示功能中打印a的值,则应执行以下操作:

main()
{
    int a=7;
    display(&a); //Pass the address of variable a
}

display(int *b) //Is expecting an address as argument
{
    printf("%d ", *b); //Print the value at that address
}
相关问题