我正在尝试将一个数组返回char*给函数.我已经将我的代码简化为一个测试用例,该测试用例克隆了一个char数组,而不是包含字符,而是包含指向这些字符的指针.
/*
* code.c
*/
#include <stdio.h>
char* makePointerCopy(char cIn[]);
int main() {
char cTest[] = {'c', 't', 's', 't'};
char* cPTest[] = makePointerCopy(cTest);
printf("%p %c", cPTest, *cPTest);
fflush(stdout);
return 0;
}
char* makePointerCopy(char cIn[]) {
char* cOut[sizeof(cIn)/sizeof(cIn[0])];
int iCntr;
for (iCntr = 0; iCntr < sizeof(cIn)/sizeof(cIn[0]); iCntr++)
cOut[iCntr] = cIn + iCntr;
return cOut;
}
Run Code Online (Sandbox Code Playgroud)
抛开一些警告,这就是编译器对这段代码的看法:
初始化程序无效(at
char* cPTest[] = makePointerCopy(cTest);)
为什么会这样?
我有一个函数试图循环结构中的2D数组:
typedef struct node
{
int grid[3][3];
} Node;
void someFunction(Node *node) {
int grid[3][3] = node->grid;
//loop through
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到了一个
mp.c:42:错误:初始化程序无效