----------------解决方案--------------------------------------------------------
不丢内存么
不丢内存。因为此时无论是形参指针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编辑过]
----------------解决方案--------------------------------------------------------
哦
呵呵,老师啊
行贿行贿
帮忙看看DEV能不能通过
下了
通不过。看来只能在C编译器通过了.恩,8.
----------------解决方案--------------------------------------------------------