首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >交换C++中二维指针数组的字符数组指针元素时出错

交换C++中二维指针数组的字符数组指针元素时出错
EN

Stack Overflow用户
提问于 2014-07-19 22:03:35
回答 2查看 106关注 0票数 0

我不能真正理解我的交换函数中的问题:

代码语言:javascript
运行
复制
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);
}

上面写着

代码语言:javascript
运行
复制
error: called object type 'char *' is not a function or
      function pointer
        (*words)[w2] = temp;
        ^

我为我的字符数组创建了临时指针..然后我赋值这个指针,而不是2D指针数组中的另一个指针。这里会有什么问题呢?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-07-19 22:07:17

您忘记了一个分号,所以这是:

代码语言:javascript
运行
复制
(*words)[w1] = (*words)[w2]
(*words)[w2] = temp;

解析为:

代码语言:javascript
运行
复制
(*words)[w1] = (*words)[w2](*words)[w2] = temp;
票数 2
EN

Stack Overflow用户

发布于 2014-07-19 22:16:55

您忘了在这两个语句之间加一个分号

代码语言:javascript
运行
复制
(*words)[w1] = (*words)[w2] // <== absence of a semicolon
(*words)[w2] = temp;

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

代码语言:javascript
运行
复制
char *temp = malloc(sizeof(char*) * MAXWORD);
temp = (*words)[w1];

所以有一个内存泄漏。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24841207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档