字符串的定义
请问字符串的定义能否用 char * p="hello world"定义。请高手详细回复。
[此贴子已经被作者于2006-5-5 16:18:06编辑过]
----------------解决方案--------------------------------------------------------
不好意思,没看清您的帖子,
字符串的字符串????
您这样定义等价于:定义一个指针,指向"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"定义。
请高手详细回复。
请问字符串的定义能否用 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
...
----------------解决方案--------------------------------------------------------