| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1085 人关注过本帖
标题:[讨论]字符串问题
只看楼主 加入收藏
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

没明白你的意思
再说你这个:
char try[]="asdf",c;
try=&c;

也有严重的语法错误啊
至少是
char try[]="asdf",*c;
try=c;

2007-02-06 10:07
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
以下是引用cdmalcl在2007-2-6 10:07:08的发言:

没明白你的意思
再说你这个:
char try[]="asdf",c;
try=&c;

也有严重的语法错误啊
至少是
char try[]="asdf",*c;
try=c;



try=c也不行的
我的意思是说
try变量本身是一个指针常量,try所存放的地址是不能修改的

2007-02-06 10:11
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 


原来是这个意思
哪有这么说的
我冤枉

2007-02-06 10:12
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
晕呀,我理解没错
口误
我语文差呀
从小语文就不及格,说出来跟想的不一样!!!!
2007-02-06 10:24
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

都是老师的错
你这孩子这么聪明这么能不及格
回小学找老师算帐去

2007-02-06 10:28
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 

char try[]="asdf",*c;
try=c;

各位兄弟,又把老师教的东西还了,上面的明显是错的么。

数组名作为数组的首地址,在编译结束后就已经定死了,其地址是不能被修改的,强行赋值try=c;这样编译器肯定是通不过的,老师肯定是这样教你们的啊


如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2007-02-06 17:56
tryplus
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-5
收藏
得分:0 
各位还是没答到正题上啊,我是问try 所指的字符串“asdf" 所占的内存有没有被改。
从程序运行结果看它好像是被改了,可“asdf" 又不是变量,怎么能被改呢???



下面是完整的程序,大家可以运行试试:

#include <stdio.h>

int main()
{
char * try="asdf";
scanf ("%s",try );
printf ( "%s",try);
getchar();
}

没出错的话屏幕上显示的应是你输入的字符串。

顺便说一下,如果第一行用 char try[]="asdf",那肯定是没问题的,因为系统运行时会给try分配一个变量空间,而这空间中的值是可更改的!

[此贴子已经被作者于2007-2-13 12:40:38编辑过]

2007-02-13 12:35
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
[QUOTE][QUOTE]try=c;[/QUOTE]

常量怎么能赋值???

[/QUOTE]char* try[]="asdf";
scanf ("%s",try );
[/QUOTE]

这也不是合法的语句,要赋值需要动态分配内存.

由于工作,N久都没来了!
2007-02-13 12:38
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 

#include <stdio.h>

int main()
{
char * try="asdf";
scanf ("%s",try );
printf ( "%s",try);
getchar();
}

你这个try指针指向一个常量字符串,老师教我们的时候好像是这么说的,你试用scanf 函数给这个字符串重新赋值,我知道在VC上编译是能通过的,然后运行的话会死机的,TC上我不知道,可能不会死机,另外try是某些语言的关键字,最好不要用这个名称做变量。


如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2007-02-14 14:37
保修一年
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-2-7
收藏
得分:0 
各位还是没答到正题上啊,我是问try 所指的字符串“asdf" 所占的内存有没有被改。
从程序运行结果看它好像是被改了,可“asdf" 又不是变量,怎么能被改呢???



下面是完整的程序,大家可以运行试试:

#include <stdio.h>

int main()
{
char * try="asdf";//执行后,为"asdf"分配空间,try这个空间中,存放一个地址,这个地址是字符串"asdf"中的'a'的地址.
scanf ("%s",try );//输入一串字符到缓冲区,回车,编译器为输入的字符串开辟空间,把首地址存在try这个空间中,
printf( "%s",try);//此时,到try空间中,找到存放在里面的地址,然后读出
getchar(); //吸收'\n'字符用??
}

结果:
try所指向的字符串“asdf" 所占的内存没有被改变.而被抛弃,程序执行完,自动收回


C忘完了,C++也忘完了,我咋个办哦,又瓜又不努力的. 研究QT中...........
2007-02-14 17:12
快速回复:[讨论]字符串问题
数据加载中...
 
   



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

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