C++ 用指针写了个简单的交换字符串程序 帮忙看看错在哪

来源:百度知道 编辑:UC知道 时间:2024/06/23 02:34:42
#include <iostream>
#include <string>
using namespace std;

void swap (char * a, char * b);

void main ()
{
char * a[] = {"anc","cjf"};
swap( *a , *(a+1) );
cout << a[0] << ' ' << a[1] << endl;
}

void swap (char * a, char * b)
{
char *t ;
strcpy (t,a);
strcpy (a,b);
strcpy (b,t);
}

编译通过 运行时候提示错误 大家帮忙看看

char *t; /*没有赋值,非法指针*/
可以这样定义
char t[100] = {0}; 但是这个不安全;
最好这样
char *t = (char*)molloc((strlen(a)>strlen(b))?a:b);

如果只是按照你上面的用途的话,不要这么麻烦,直接这样:
void main ()
{
char * a[] = {"anc","cjf"};
char *tmp = NULL;

tmp = a[0];
a[0] = a[1];
a[1] = tmp;

cout << a[0] << ' ' << a[1] << endl;
}
不需要掉函数,这样就ok

不能直接char *t。要用char t[255];之类的。

char* t没有new 空间就直接使用了指针了,
初学常犯的错误

神人啊 没有给 t 初始化