求助,C语言,编译时提示 'int *' differs in levels of indirection from 'int [32][32]'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,C语言,编译时提示 'int *' differs in levels of indirection from 'int [32][32]'相关的知识,希望对你有一定的参考价值。
int *combine(int array[16],char *key,char *edition_source,char *text)
int last;
int ciphertext[32][32];
char keyword[32];
int row,col,arr,num,length; /* row col:ciphertext[row][col];arr:array[arr];num:text+num */
row=col=arr=num=0;
length=strlen(text);
length=strlen(key);
last=32-length;
if(last>0)
strcat(keyword,key);
for(row=0;row<32;row++)
for(col=0;col<32;col++)
if(arr>=16)
arr=0;
ciphertext[row][col]=*(text+num)+array[arr];
arr++;
num++;
return (ciphertext); /*这里提示warning C4047: 'return' : 'int *' differs in levels of indirection from 'int [32][32]'和warning C4172: returning address of local variable or temporary*/
include全了的,就不粘上来了
求指教!
第二条这里有有意义了, 你把指向局部变量的指针返回后得到的值可能是不确定的
也就是说 ciphertext[32][32]; 这块内存是在栈中,函数退出后 可能会变化
这时应该用堆内存,或ciphertext空间由调用者申请 参考技术A 你返回的是二维数组,就是二级指针,定义函数可以定义为:
int **combine(int array[16],char *key,char *edition_source,char *text) 参考技术B 应该返回一维指针类型 但是你返回的是二维的指针追问
那该如何修改?谢谢
追答int **combine(int array[16],char *key,char *edition_source,char *text)
以上是关于求助,C语言,编译时提示 'int *' differs in levels of indirection from 'int [32][32]'的主要内容,如果未能解决你的问题,请参考以下文章
c语言写scanf("%d",(int)&num);提示错误but argument 2 has type 'int'
C语言链表问题 DEVC++编译出error:too many arguments to function 'int deletNode()'