读书人

int *q=100; 不对原理是怎样的?解决

发布时间: 2012-02-15 12:09:44 作者: rapoo

int *q=100; 不对,原理是怎样的?
为什么char *p= "abc ";就行?
能说说原理马?

[解决办法]
int *q=100;
编译器并没有为100开辟存储空间,p指向哪里?

char *p= "abc ";
"abc "是常量字符串,被存储在静态区,p指向他们的首地址。

[解决办法]
int *q = 100;

q是一个指针变量,它指向一个int类型的数据的地址;100是一个常值,如果将它直接赋给q,如

果这个操作是正确的,那它的含义是将q指向内存地址位100的内存空间。很显然,这是不能够允

许的,如果允许这种直接给指针赋常值,那人人都是黑客了,想破坏系统易如反掌了。

char *p= "abc ";

首先在内存中开辟了一个静态的区域,用来存储 "abc ",然后用p指向这个字符串的首地址,这是

正确的。

读书人网 >C++

热点推荐