使用doublepointer返回指针的值

时间:2014-01-19 11:08:22

标签: c pointers pointer-to-pointer

代码:

#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;
}

如何返回第一个ptrptr + 0的地址值?我尝试了所有东西,每次输入超过1时它似乎都会崩溃。

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` */