如何打印指针的指向值?

Mis*_*u4u 0 c pointers memory-address

我在教科书中找到了以下代码:

#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;
}

 }
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但我对逻辑有疑问:

  1. 我发送数组变量的地址.但是在disp函数中我使用指针变量作为参数并打印指针的值.因此,从main函数发送的参数类型应该与参数不匹配disp.那么它是怎样工作的?

  2. 我试着通过改变disp函数来做同样的事情

    void disp( int (&k))
    {
    printf("%d",*k);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是我收到了一个错误.我应该怎么做才能使地址作为一个论点,即void disp(int &k)

Dan*_*her 5

1)我发送数组变量的地址.但是在disp函数中,我使用指针变量作为参数并打印指针的值.

理解指针是一个地址.所以,&marks[i] int*.并且您不是打印指针的值,而是指向它指向的值.

printf("%d",*k);
Run Code Online (Sandbox Code Playgroud)

*k取消引用指针,使指针指向的值.

void disp( int (&k))
Run Code Online (Sandbox Code Playgroud)

是C中的无效语法,&k不是有效的标识符.