c - 如何打印指针的指向值?

标签 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;
}

 }

代码工作得很好,但我对逻辑有疑问:

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

  2. 我尝试通过将 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/

相关文章:

C++:用于循环打印地址而不是值的数组

c - 如何将物理地址转换为内核模块(x86-64)内的内核页面结构?

c - 当前目录是gcc默认的静态库、动态库、头文件搜索路径吗?

C++ : Using a int pointer to point to a vector created inside a function

c - 如何使用指针更改字符串中的字符?

c++ - 在不创建任何类型对象的情况下声明 vector 和指针

c - 如何用C完成通配符功能?

C - 浮点异常(核心转储)

c++ - 异步 FTP 库

c - 指针变量的地址是如何分配的?他们遵循任何模式吗?