读书人

来指点一下.非常感谢

发布时间: 2012-02-26 20:19:43 作者: rapoo

高手进来指点一下.非常感谢

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);} 

读书人网 >C++

热点推荐