C-作为无效ptr传递的ptr到int列表的地址-使用int或const int?
我有一个C-作为无效ptr传递的ptr到int列表的地址-使用int或const int?,c,pointers,constants,void-pointers,C,Pointers,Constants,Void Pointers,我有一个int*intList,我正在将&intList传递给一个函数,该函数接受一个void*。该函数的作用类似于: int** ptr = voidPtr; *ptr = malloc(...) for(...) { (*ptr)[i] = ... } 我的直觉告诉我,考虑到函数的功能,我应该将其保留为int*intList。但是我也知道int list的内容不应该在该函数之外进行修改,所以使用const int*int list是否正确?或者这是一个糟糕的设计?函数应该返回一个常量
int*intList
,我正在将&intList
传递给一个函数,该函数接受一个void*
。该函数的作用类似于:
int** ptr = voidPtr;
*ptr = malloc(...)
for(...)
{
(*ptr)[i] = ...
}
我的直觉告诉我,考虑到函数的功能,我应该将其保留为
int*intList
。但是我也知道int list的内容不应该在该函数之外进行修改,所以使用const int*int list
是否正确?或者这是一个糟糕的设计?函数应该返回一个常量int*
,然后可以将它分配给同一类型的变量,而不是指针的地址
例如:
const int *getList()
{
int *ptr = malloc(...)
for(...)
{
ptr[i] = ...
}
return ptr;
}
那么就这样称呼它:
const int *intList = getList();
这可以防止像
intList[0]=4这样的更改。你需要做的唯一一件事是在将它传递到free
时将指针指向void*
不清楚如果以后它将被释放,它将如何不被修改?我认为这是一个糟糕的设计,因为const
暗示列表的内容永远不会被更改,所以我不应该free
它(这是错误的)。另一个与您的:const char*foo(){return“foo”;}