printf%f地址错误

时间:2018-06-28 03:30:03

标签: c printf

printf指针地址有问题。我对printf感到困惑,这是代码:

#include<stdio.h>
int main() {
  float aa[3] = {1.0, 2.0, 3.0};
  printf("%f, %f\n", aa, aa[1]);
  return 0;
}

当我编译它并得到如下结果时:

2.000000, 1.000000

3 个答案:

答案 0 :(得分:2)

如果要打印地址,则应使用%p而不是%f的参数类型。

答案 1 :(得分:1)

您所做的基本上是在图书馆说谎(或至少作弊)。是出于意图还是偶然都没关系。

您告诉库要打印ngOnInit(): void { const screen = this.activatedRoute.snapshot.queryParams['screen']; console.log('main component loaded.'); console.log(screen); this.router.navigate([screen]); } 值。 double在不知道真实类型的情况下,从变量参数列表中获取printf的内容。 但是然后您将一个地址输入到参数列表中,该地址的类型和大小错误。

这不仅意味着该参数的值打印不正确,而且还意味着从输入中消耗了错误的字节数。

由于double从错误的地址读取,因此第二个参数也可能打印不正确。

答案 2 :(得分:0)

您可以使用%p来打印地址, 在这里,aa和&aa [0]都相同,它们保存着数组的基地址。 试试这个:

printf("%p %p",&aa[0],aa); /*Which will give you the base address of array*/

您将获得十六进制格式的o / p。