我正在学习 C,我试图用指针反转数组中的每个字符串。当我运行下面的代码时,我收到警告,传递 'swapChars' 的参数 1 和 2 会在没有强制转换的情况下从整数生成指针。当我运行它时,我得到一个“总线错误”。有谁知道为什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swapChars(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(int size, char* arr[]) {
for(int w = 0; w < size; w++) {
int length = strlen(arr[w]);
for(int i = 0; i < length/2; i++) {
swapChars(arr[w][i], arr[w][length-i]);
}
}
}
编辑:谢谢!我不再收到任何错误/警告,但是您知道为什么当我使用“hello world”运行它时它不打印任何东西吗?这是我的主要():
int main(int argc, char* argv[]) {
int numWords = argc-1;
char** words = argv+1;
reverse(numWords,words);
for (char** word = words; word < words+numWords; word++) {
printf("%s ",*word);
}
printf("\n");
return 0;
}