对于项目分配,我有一个未分配的原型函数中的以下变量。
int **suff;
此变量将从一个函数接收指向数组(int *)的指针,该函数将从FILO列表(文件)生成一个(int)数组。
((p只是一个内容结构,p-> suff是一个文件)
int t = file_size(p->suff);
/* Prototype of file_tabint is
* int * file_tabint(file *p, int * psize)
*/
// Assign the generated array to the *suff)
*suff = file_tabint(p->suff, &t);
现在,当我要打印数组时,valgrind引发“大小为4的无效读取”
for (int i = 0; i < t; i++) {
printf("%d -- ", *suff[i]);
}
我的问题是,为了访问数组的int值,我做错了什么?
注意:我不能更改int ** suff
问题是*suff[i]
。运算符优先级的工作方式是先执行suff[i]
,然后再解除对其中引用的引用。您想反过来做,所以加括号:
for (int i = 0; i < t; i++) {
printf("%d -- ", (*suff)[i]);
}