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

字符串问题

热度:368   发布时间:2006-12-13 12:19:57.0
我是按你的方法自己修改后行的~!谢谢~!
----------------解决方案--------------------------------------------------------
以下是引用song4在2006-12-13 12:13:46的发言:
不丢内存么

不丢内存。因为此时无论是形参指针p或者p都已经指向固定的字符串了.不过可以这样改更简单些
char fun(char *p,int i)
{ char temp;
if(i>strlen(p)||i<1) return 0;
temp=p[i-1];
for(;i<=strlen(p);i++)
p[i-1]=p[i];
return temp;
}


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

VC6.0运行全部错误


----------------解决方案--------------------------------------------------------
那是因为vc中对char *p指向的字符串默认为不可修改的,
而C语言标准没有对此规定它不可修改。
----------------解决方案--------------------------------------------------------

这里 char *p="123456789T";
默认是const char *p;

#include<iostream>
using namespace std;

void main()
{
int i=1; // i 不是常量并不表示1不是常量
char *a="hello"; //a不是常量,并不表示"hello"不是常量。
a="123"; //编译通过 ->a不是常指针(可以改变地址)
a++; //编译通过 -> a不是常指针(可以改变地址)
a[0]='H'; //编译通过,运行错误(试图对常量进行修改)-> a是const char *;

}


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

我说了在c++,char *p指向的字符串是不可修改的,
但在C语言中,并没有规定它不可修改。


----------------解决方案--------------------------------------------------------
是么
可能对象语言看多了
过程语言忘了
但是C语言不把那个字符串当常量看么

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

这个字符串在C++里是被看成是常量了,
在c里倒是没对它做那么多规定。
我教C2年了,倒是都以C的眼光看语言了...


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

呵呵,老师啊
行贿行贿
帮忙看看DEV能不能通过
下了

[此贴子已经被作者于2006-12-13 22:20:39编辑过]


----------------解决方案--------------------------------------------------------
以下是引用song4在2006-12-13 22:19:04的发言:

呵呵,老师啊
行贿行贿
帮忙看看DEV能不能通过
下了

通不过。看来只能在C编译器通过了.恩,8.


----------------解决方案--------------------------------------------------------
  相关解决方案