关于常量赋值的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:53:43
void main()
{
const char *p = "abcfdsafsdad";
char *pp = p;
const int i = 1;
int j = i;
}
为什么p不能赋给pp,而i可以赋给j,这里都是const量赋值给变量嘛?

常量只能在声明的同时赋值(初始化)
char *p = "abcfdsafsdad";
char *const pp = p;
就可以啦

注意char*const 和const char*的区别
前者是指针常量(指向固定内存单元的指针),
后者是常量指针(指向的内存单元为常量的指针)
所以const char *和char *都是变量而已
但const char *指向的内存单元为常量

你的代码问题不在常量赋值
而是试图把一个const char*变量赋值给一个char*变量
可以通过强制类型转换完成

p是指针,指向字符的地址。
语法为:指针只是指向某一数据对象的引用。pp指针未指向对象而赋值。
j是基本数据类型 j是变量所以能。
const定义常量。
i是不能修改的。

问题出在PP这个变量上,这是个指针变量,意思是可以随便指向任何内存单元。但是P是个常量,他的值是固定的。所以就不行了。而后面的只是普通变量,是可以的。