当我使用主数组的基地址创建一个新数组时,我会这样写:
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]);
}
答案 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
}