1

试图了解 C 编程语言中的内存分配和指针。

如果我为这样的数组分配内存空间:

int *array = (int*) calloc(10, sizeof(int));

然后我可以让用户输入多个值以像这样进入该数组吗?

printf("Please enter values:\n");
scanf("%d", &*array);

此外,第一行代码还在内存中为数组和指向该空间的指针创建了一个空间。即我以后可以使用*array 指向该数组中的一个数字吗?如果不是这种情况,我是否需要一些代码:

int *ptr;
int array;
ptr = array;

对编程很陌生,所以如果我的逻辑没有清楚地显示出来,我深表歉意。还要提前感谢您的帮助。

罗斯

4

1 回答 1

1

如果没有循环,您将无法做到这一点。这是您可以执行的操作:

for (int i = 0 ; i != 10 ; i++) {
    printf("Please enter value for element %d:\n", i+1);
    scanf("%d", &array[i]);
}

第一行代码是否在内存中为数组和指向该空间的指针创建了一个空间?

是的,它确实。在 C 中,您不需要转换malloc/ calloc/的结果realloc,因此您可以像这样重写该行:

int *array = calloc(10, sizeof(int));
于 2013-11-06T18:14:37.343 回答