更正参数 char *[] 以调用函数?
Correct parameter char *[] to call function?
我正在尝试实现冒泡排序函数 bubbleSort(names, size) 并使用我的驱动程序代码对其进行测试。调用该函数时,驱动程序代码出现错误。我想知道调用函数时如何正确设置第一个参数。
我收到两个与第一个参数“names”相关的错误。
Error (active) E0167 argument of type "char *" is incompatible with parameter of type "char **"
Error C2664 'void bubbleSort(char *[],const int)': cannot convert argument 1 from 'char [8]' to 'char *[]'
我正在使用 Windows 10 Pro(64 位)和 Visual Studio Community 2019。
预先感谢您的帮助。
#include <iostream>
#include <string.h>
using namespace std;
enum Bool { TRUE, FALSE };
void bubbleSort(char *names[], const int size)
{
Bool swapped;
char* temp;
for (int i = 0; i < size; ++i)
{
swapped = FALSE;
for (int j = 0; j < size - i - 1; ++j)
{
if (names[j] > names[j + 1])
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = TRUE;
}
}
// if no two elements were swapped by inner loop, then break
if (swapped == FALSE)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size); // i get error here for 'names'
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}
您的排序函数需要一个 C 字符串数组,但您向它传递的是一个字符数组。因此错误。
要对字符数组进行排序,试试这个:
#include <iostream>
using namespace std;
void bubbleSort(char names[], const int size)
{
bool swapped;
char temp;
for (int i = 0; i < size; ++i)
{
swapped = false;
for (int j = 0; j < size - i - 1; ++j)
{
if (names[j] > names[j + 1])
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}
或者,要对 C 字符串数组进行排序,试试这个:
#include <iostream>
#include <cstring>
using namespace std;
void bubbleSort(const char* names[], const int size)
{
bool swapped;
const char* temp;
for (int i = 0; i < size; ++i)
{
swapped = false;
for (int j = 0; j < size - i - 1; ++j)
{
if (strcmp(names[j], names[j + 1]) > 0)
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
const char* names[] = {"s", "a", "c", "d", "i", "d", "m", "o"};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}
我正在尝试实现冒泡排序函数 bubbleSort(names, size) 并使用我的驱动程序代码对其进行测试。调用该函数时,驱动程序代码出现错误。我想知道调用函数时如何正确设置第一个参数。
我收到两个与第一个参数“names”相关的错误。
Error (active) E0167 argument of type "char *" is incompatible with parameter of type "char **"
Error C2664 'void bubbleSort(char *[],const int)': cannot convert argument 1 from 'char [8]' to 'char *[]'
我正在使用 Windows 10 Pro(64 位)和 Visual Studio Community 2019。 预先感谢您的帮助。
#include <iostream>
#include <string.h>
using namespace std;
enum Bool { TRUE, FALSE };
void bubbleSort(char *names[], const int size)
{
Bool swapped;
char* temp;
for (int i = 0; i < size; ++i)
{
swapped = FALSE;
for (int j = 0; j < size - i - 1; ++j)
{
if (names[j] > names[j + 1])
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = TRUE;
}
}
// if no two elements were swapped by inner loop, then break
if (swapped == FALSE)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size); // i get error here for 'names'
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}
您的排序函数需要一个 C 字符串数组,但您向它传递的是一个字符数组。因此错误。
要对字符数组进行排序,试试这个:
#include <iostream>
using namespace std;
void bubbleSort(char names[], const int size)
{
bool swapped;
char temp;
for (int i = 0; i < size; ++i)
{
swapped = false;
for (int j = 0; j < size - i - 1; ++j)
{
if (names[j] > names[j + 1])
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}
或者,要对 C 字符串数组进行排序,试试这个:
#include <iostream>
#include <cstring>
using namespace std;
void bubbleSort(const char* names[], const int size)
{
bool swapped;
const char* temp;
for (int i = 0; i < size; ++i)
{
swapped = false;
for (int j = 0; j < size - i - 1; ++j)
{
if (strcmp(names[j], names[j + 1]) > 0)
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
const char* names[] = {"s", "a", "c", "d", "i", "d", "m", "o"};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; ++i)
cout << names[i] << " " << endl;
}