这是个指针数组。里面存了五个char*类型的指针变量,用来指向五个字符串。所以你应该只能把地址赋值给它,不能直接把字符串赋值给它。
这代码在g++下给个警告,vc直接报错。
字符串常量用const char*,这种不能更改字符内容
或者用char name[5][20]。这种方式后面交换需要用strcpy
【以下回答由 GPT 生成】
问题的原因是你将字符串指针定义为了一个数组,而不是一个指针。在这种情况下,你需要使用指针数组(char name[5])而不是字符串指针(char name)来存储字符串的地址。
解决方案:
首先,将char name[5]改为char name,这样定义一个字符串指针。然后,在执行排序之前,为字符串指针分配内存并将字符串的地址存储在每个指针中。
修改后的代码如下:
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
char* name[5];
char* pt;
int i, j, k;
// Assigning addresses of strings to the pointer array
name[0] = "ihuac";
name[1] = "hexiaomig";
name[2] = "hangli";
name[3] = "sufei";
name[4] = "chenbao";
// Sorting the array of strings
for(i=0; i<4; i++) {
k = i;
for(j=i+1; j<5; j++) {
// Comparing the strings using strcmp function
if(strcmp(name[i], name[j]) > 0)
k = j;
}
if(k != i) {
// Swapping the strings
pt = name[k];
name[k] = name[i];
name[i] = pt;
}
}
return 0;
}
这样修改后的代码应该可以正确编译和执行。
【相关推荐】