当前位置: 代码迷 >> C语言 >> 字符串的定义
  详细解决方案

字符串的定义

热度:120   发布时间:2006-05-05 15:51:00.0
字符串的定义
请问字符串的定义能否用 char * p="hello world"定义。
请高手详细回复。

[此贴子已经被作者于2006-5-5 16:18:06编辑过]

搜索更多相关的解决方案: 定义  字符  hello  char  world  

----------------解决方案--------------------------------------------------------
不好意思,没看清您的帖子,
字符串的字符串????
您这样定义等价于:定义一个指针,指向"hello world"的首地址,即"h".
至于"hello world"的空间由系统自动开辟.

[此贴子已经被作者于2006-5-5 15:59:06编辑过]


----------------解决方案--------------------------------------------------------

#include <stdio.h>

void main()
{
char *p="I'm andyss";

for(;*p!=0;){
printf("%c\n",*p);
p++;
}

}
这个是可以的


----------------解决方案--------------------------------------------------------
我声明一下,不支持这样的定义,这样很不好啊!
----------------解决方案--------------------------------------------------------
以下是引用herotobe在2006-5-5 15:51:00的发言:
请问字符串的定义能否用 char * p="hello world"定义。
请高手详细回复。

目前问题不大,C99标准推开后可能有问题。建议不要这样做。同样的意图可改写成

char s[ ]="hello world", *p=s;

这样一来,指针p就既能“读”串又能“改写”串了。当然不可以“扩张”其长度。


----------------解决方案--------------------------------------------------------
楼主那样定义后不能修改字符串,把字符串定义成常量了,应向楼上的定义成数组形式
----------------解决方案--------------------------------------------------------
楼上正解.假如这样定义,不能修改其内容,因为是字符串的内存是静态的.
假如要做到可以修改,可以这样:
char *GetString=NULL;
GetString=(char *)malloc(sizeof(char)*num); //分配内存,长度自己定义
if(GetString==NULL) //判断是否分配成功,不成功终止函数
exit (1);
....
free(GetString); //释放内存
GetString=NULL; //把指针指定为NULL
...
----------------解决方案--------------------------------------------------------
  相关解决方案