今天帮别人改一段程序的时候,看到这样的代码先就说是错的:
char * p = "Hello World";没想到这居然是谭浩强的C语言教程里边经常用的,还有一种形式是:
char * p;
p = "Hello World";两种用法在书里边都有,而且是不会报错的,不少人也是一直这么在用,似乎也基本上不会出问题。
不过总觉得有点奇怪,这样声明的p指向的时不确定的内存空间,直接赋给其常量应该是危险的才对啊。
还希望大虾们能指点迷津

解决方案 »

  1.   

    这个没问题啊
    "Hello,World"是常量会在全局堆中申请空间的啊
      

  2.   

    但是char *p;
    *p='a';
    这样是错的,因为*p没有申请空间
      

  3.   

    只要是常量,不管用在局部还是全局,都在一个特别的常量专用的段分配空间.
    这是TC里的典型语法,用C++的话,还是换其它方式好,因为常量的空间有限,把它当char *进行读写很容易形成访问违规
      

  4.   

    知道了,也就是说,p = "Hello World"; 其实是重新定位p指向的地址。
    也谢谢QunKangLi(李群康),这下这个问题我清楚了