在C中交换2d指针数组的char数组指针元素时出错

时间:2014-07-19 14:03:35

标签: c pointers

我无法理解交换功能中的问题:

void swap(char ***words, int w1, int w2){
    char *temp = malloc(sizeof(char*) * MAXWORD);
    temp = (*words)[w1];
    (*words)[w1] = (*words)[w2]
    (*words)[w2] = temp;
    free(temp);
}

它说

error: called object type 'char *' is not a function or
      function pointer
        (*words)[w2] = temp;
        ^

我为我的chars数组创建了临时指针..然后我在2D指针数组中指定了这个指针而不是另一个指针。这可能有什么不对?谢谢

2 个答案:

答案 0 :(得分:2)

你忘记了分号,所以这个:

(*words)[w1] = (*words)[w2]
(*words)[w2] = temp;

被解析为:

(*words)[w1] = (*words)[w2](*words)[w2] = temp;

答案 1 :(得分:1)

您忘了在这两个陈述之间加上分号

(*words)[w1] = (*words)[w2] // <== absence of a semicolon
(*words)[w2] = temp;

但是在任何情况下你的代码都没有意义,因为你首先分配存储在指针temp中的地址,然后重新分配指针。

char *temp = malloc(sizeof(char*) * MAXWORD);
temp = (*words)[w1];

因此存在内存泄漏。