为了账号安全,请及时绑定邮箱和手机立即绑定

在C中用单独的函数初始化指针

在C中用单独的函数初始化指针

C
阿波罗的战车 2019-07-04 17:51:07
在C中用单独的函数初始化指针我需要做一件简单的事情,我曾经在Java中做过很多次,但是我被困在了C(纯C,而不是C+)中。情况如下:int *a;void initArray( int *arr ){     arr = malloc( sizeof( int )  * SIZE );}int main(){     initArray( a );     // a is NULL here! what to do?!     return 0;}我有一些“初始化”函数,它应该为一些分配的数据指定一个给定的指针(不重要)。如果要修改指向这个指针的指针,那么我应该如何给出一个函数的指针,然后在代码中进一步使用(在函数调用返回之后)?
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您需要调整*a指针,这意味着您需要传递一个指向*a的指针。

int *a;void initArray( int **arr ){
    *arr = malloc( sizeof( int )  * SIZE );}int main(){
    initArray( &a );
    return 0;}


查看完整回答
反对 回复 2019-07-04
?
临摹微笑

TA贡献1982条经验 获得超2个赞

你在分配arr内边值initArray的值的任何变化。arr外面的世界是看不见的。你得通过arr指针:

void initArray(int** arr) {
  // perform null-check, etc.
  *arr = malloc(SIZE*sizeof(int));}...initArray(&a);


查看完整回答
反对 回复 2019-07-04
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

或者(以及更好的国际水文学组织)int *initArray(size_t s) { return malloc(sizeof(int) * s); }然后用它作为int *arr = initArray(SIZE);

查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 465 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信