【问题标题】:Output does not print the correct variable addresses输出不打印正确的变量地址
【发布时间】:2023-02-07 01:39:00
【问题描述】:

尽管使用 double 作为数据类型和正确的格式说明符,但输出不打印正确的变量地址,输出仅包含零

`#include<stdio.h>
void main()
{
    double a[5]={6.0,7.0,8.0,9.0,10.0};
    double *p;
    p=a;
    printf("%lf \n",p);
    for(int i=0;i<5;i++)
    {
         printf("%lf \n",p++);
    }
}`

Output: 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

【问题讨论】:

  • 您不能使用 %lf 来打印指针。您是要打印指针本身还是指向的值?
  • 您可能需要 *p*p++
  • 另外,如果您使用%p,则转换为(void*)

标签: arrays c pointers


【解决方案1】:

我通过 cmets 中描述的 2 个简单更改修复了它。

#include<stdio.h>
void main()
{
    double a[5]={6.0,7.0,8.0,9.0,10.0};
    double *p;
    p=a;
    printf("%p 
",p);       // Changed formatter to %p  to print addresses
    for(int i=0;i<5;i++)
    {
         printf("%p 
",p++); // Changed formatter to %p to print addresses
    }
}

输出

0x7fffdd887250 
0x7fffdd887250 
0x7fffdd887258 
0x7fffdd887260 
0x7fffdd887268 
0x7fffdd887270 

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多