0

代码:

#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 时它似乎都会崩溃。

4

1 回答 1

3

首先你应该在函数中声明一个普通的指针main,然后&在调用函数时使用address-of操作符。然后在函数内部*使用指针指向指针时使用解引用运算符。

所以在main

int *ptr;

...

createAndFillList(&ptr, ninput);

并在createAndFillList

*ptr = malloc(sizeof(int) * ninput);
...
    scanf("%d", &(*ptr)[i]);  /* Or `(*ptr) + i` */
于 2014-01-19T11:10:16.093 回答