标题:字符串的定义
只看楼主
herotobe
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2006-5-3
 问题点数:0 回复次数:6 
字符串的定义
请问字符串的定义能否用 char * p="hello world"定义。
请高手详细回复。

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

搜索更多相关主题的帖子: 定义 字符 hello char world 
2006-05-05 15:51
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 
不好意思,没看清您的帖子,
字符串的字符串????
您这样定义等价于:定义一个指针,指向"hello world"的首地址,即"h".
至于"hello world"的空间由系统自动开辟.

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


对不礼貌的女生收钱......
2006-05-05 15:55
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 

#include <stdio.h>

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

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

}
这个是可以的


幽幽黄桷兰----建四狼
2006-05-05 15:56
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 
我声明一下,不支持这样的定义,这样很不好啊!

幽幽黄桷兰----建四狼
2006-05-05 16:35
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
以下是引用herotobe在2006-5-5 15:51:00的发言:
请问字符串的定义能否用 char * p="hello world"定义。
请高手详细回复。

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

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

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


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-05 16:45
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
楼主那样定义后不能修改字符串,把字符串定义成常量了,应向楼上的定义成数组形式

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-05 17:01
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
楼上正解.假如这样定义,不能修改其内容,因为是字符串的内存是静态的.
假如要做到可以修改,可以这样:
char *GetString=NULL;
GetString=(char *)malloc(sizeof(char)*num); //分配内存,长度自己定义
if(GetString==NULL) //判断是否分配成功,不成功终止函数
exit (1);
....
free(GetString); //释放内存
GetString=NULL; //把指针指定为NULL
...

我的原则很简单:不做不喜欢的事!
2006-05-05 17:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-62008-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017310 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved