【发布时间】:2015-07-04 14:27:13
【问题描述】:
常量定义为程序无法更改的固定值。像1, 2, 3, 'a' 这样的直接值以及像#define CONSTANT 100 这样定义的常量
所以我正在阅读有关空指针的信息,
NULL 指针是一个常量,在几个标准库中定义为零值。
但是指针变量是可以改变的,证明:
#include <stdio.h>
int main()
{
int *a = NULL; /* Declaration\Definition of pointer and initialization of NULL */
int b; /* Regular Declaration\Definition of variable */
a = &b; /* pointer now stores memory address of b variable */
return 0;
}
所以如果空指针是常量,那我怎么编译它没有错误。
在那之前我也读过。
如果您没有要分配的确切地址,最好将 NULL 值分配给指针变量
所以如果Null Pointer是常量,那么当我们可以获取到我们想要的地址时,你怎么分配它,常量是不能改变的。
【问题讨论】:
-
NULL指针是常量。 null 指针不一定是常量。该引用专门讨论了宏NULL,它是一个常量表达式。 -
怎么样
double val = MATH_PI;然后val = 3.0;??您已经分配了一个常量的变量 de 值,然后您已经为其分配了另一个(不同的)常量。常量是值,变量是存储该值的位置。试试这个:const double pi = 3.141592;然后尝试给它赋值(在这种情况下 pi 不是变量,它是一个常量,编译器不允许你改变它的值。