代码:
#include<stdio.h>
#include<stdlib.h>
void createAndFillList(int** ptr,int ninput){
int i;
ptr=malloc(sizeof(int)*ninput);
for(i=0;i<ninput;i++){
printf("enter: ");
scanf("%d",&*(*ptr+i));
}
printf("%p\n",&*ptr);
}
int main(){
int** ptr;
int ninput;
printf("enter how many spaces will be allocated:");
scanf("%d",&ninput);
createAndFillList(ptr,ninput);
printf("%p\n", &ptr);
getch();
free(ptr);
return 0;
}
如何返回第一个ptr
或ptr + 0
的地址值?我尝试了所有东西,每次输入超过1时它似乎都会崩溃。
答案 0 :(得分:3)
首先,您应该在main
函数中声明一个普通指针,然后在调用该函数时使用address-of运算符&
。然后在函数内部使用指向指针时使用解引用运算符*
。
所以在main
:
int *ptr;
...
createAndFillList(&ptr, ninput);
在createAndFillList
:
*ptr = malloc(sizeof(int) * ninput);
...
scanf("%d", &(*ptr)[i]); /* Or `(*ptr) + i` */