[英]Define and declare of variable of C question
我有一个关于定义和声明变量的问题。 我将 pi 定义为 3.14 并想查看它的地址,但是
printf("address of pi is %d\n", &pi);
这一行给出了一个错误。 这有点奇怪,因为
printf("address of pi is %.2f\n", pi);
此行打印 3.14。 这是否意味着定义 pi 不会为 pi 分配内存位置? 那么 3.14 是从哪里来的呢?
#include <stdio.h>
#define pi 3.14
int main(){
printf("address of pi is %.2f\n", pi);
printf("address of pi is %d\n", &pi);
return 0;
}
#define
宏执行直接文本/标记替换。 所以在预处理器运行后,这个:
printf("address of pi is %d\n", &pi);
变成这样:
printf("address of pi is %d\n", &3.14);
因此,您实际上是在尝试获取无效的数字常量的地址。
您是否将pi
声明为变量,即:
float pi = 3.14;
然后你可以得到它的地址。
此外,您应该使用%p
来打印变量的地址,而不是%d
,并且您需要将地址转换为void *
。
#define 用于常量。 它是一个预处理器指令。 因此该值是在编译时定义的,而不是分配的。
如果你想给一个变量赋值,你必须像这样声明变量并赋值:
float pi=3.14;
pi=0.0001;
无论何时声明变量,都会自动分配所需的内存量。
另一方面,&pi 不表示变量pi 的内容,而是表示变量内容存放的地址。 所以,正确的代码应该是:
#include <stdio.h>
int main(){
float pi=3.14;
printf("address of pi is %.2f\n", pi);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.