高手进来指点一下.非常感谢
- C/C++ code
#include <iostream.h>#include <string.h>char a[10] = "abacdk";char b[10];void abc(char *, char *);void ccc(char **);void main(){ abc(a, b); cout << " b = " << b << endl;//这里输出一老是abacdk}void abc(char *a, char *b){ strcpy(b, a); ccc(&b);}void ccc(char **b){ *b = *(b+3);}请问在这里我如何修改,才使得输出的b是cdk.
[解决办法]
哪有这样操作数组的
你输出的b始终是 全局 b[] 的首地址
[解决办法]
b是数组名,你怎么修改它的值
- C/C++ code
#include <iostream>#include <string.h>using namespace std;char a[10] = "abacdk";char b[10];void abc(char *, char *);void ccc(char *b);void main(){ abc(a, b); cout << " b = " << b << endl;//这里输出一老是abacdk}void abc(char *a, char *b){ strcpy(b, a); ccc(b);}void ccc(char *b){ strcpy(b, b+3);}
[解决办法]
1,难道变量名只有a,b可用?拜托不换一个别的名字,不要跟全局变量重名,看起来太累。
2,关键是
void abc(char *a, char *b)
{
strcpy(b, a);
ccc(&b);
}
这个函数的 char *b这个变量是在栈里的,你调用ccc只是把它的内容改了而已。
3,main中的b是全局变量的b,这个你是怎么也改不了的
[解决办法]
数组名作为指针使用的时候,是一个常量的指针,不可以被赋值的,所以你的ccc()函数实际上相当于没用
可以这样改:
- C/C++ code
#include <iostream>#include <cstring>using namespace std;char a[10] = "abacdk";char b[10];char* p = b;void abc(char *, char *);void ccc(char *&);int main(){ abc(a, b); cout << " b = " << p << endl;//这里输出一老是abacdk return 0;}void abc(char *a, char *b){ strcpy(b, a); ccc(p);}void ccc(char *&b){ b = (b+3);}