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
答案 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。