我正在尝试将指针从main传递给我编写的函数,该函数假设分配大小为整数的内存并接收来自用户的输入。
现在我知道我做错了,因为指针在主函数中没有改变。有人能告诉我究竟做错了什么吗?
int rows, *newCol=NULL // the pointer inside main();//rows is the size of the array.
功能:
void buildArr(int *newCol, int rows);
void buildArr(int *newCol, int rows)
{
int i;
newCol = (int*)malloc(sizeof(int)*rows);
for (i = 0; i<rows; i++)
{
printf("enter the value of the newCol:\n");
printf("value #%d\n", i + 1);
scanf("%d", &newCol[i]);
}
}
答案 0 :(得分:3)
指针不应在callee
中更改。 C是按值传递的。
传递指针变量的地址
称之为
buildArr(&newCol,rows);
...
...
void buildArr(int **newCol, int rows)
{
int i;
*newCol = malloc(sizeof(int)*rows);
...
scanf("%d", &(*newCol)[i]);
}
// nothing is returned.
}
或返回已分配块的地址
newCol = buildArr(newCol, rows);
...
...
int* buildArr(int *newCol, int rows)
{
int i;
newCol = malloc(sizeof(int)*rows);
...
scanf("%d", &newCol[i]);
...
return newCol;
}