我在课本上找到了如下代码:
#include<stdio.h>
void disp( int *k)
{
printf("%d",*k);
}
int main( )
{
int i ;
int marks[ ] = { 55, 65, 75, 56, 78, 78, 90 } ;
for ( i = 0 ; i <= 6 ; i++ )
disp ( &marks[i] ) ;
return 0;
}
}
代码工作得很好,但我对逻辑有疑问:
我正在发送数组变量的地址。但在
disp
函数中,我使用指针变量作为参数并打印指针的值。因此main
函数发送的参数类型应该与disp
的参数不匹配。那么它是如何工作的呢?我尝试通过将
来实现同样的效果disp
函数更改为void disp( int (&k)) { printf("%d",*k); }
但是我收到一个错误。我应该怎么做才能通过将地址作为参数使其工作,即
void disp(int &k)
?
最佳答案
1) I am sending the address of variables of the array. But in the disp function I am using a pointer variable as argument and printing the value of the pointer.
理解指针是地址。所以&marks[i]
是一个int*
。你不是在打印指针的值,而是它指向的值。
printf("%d",*k);
*k
解引用指针并给出指向的值。
void disp( int (&k))
在 C 中是无效的语法,&k
不是有效的标识符。
关于c - 如何打印指针的指向值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955076/