有人可以说明这是要我做什么吗?

问题描述

enter image description here

我了解数组(int ** intptrArray [5])和rand()数字部分的创建。但是,我不明白中间的句子-我知道我需要先分配数组,然后将数组中的每个指针分配给一个int,但是我不确定该如何处理,因此我一直处于困境几个小时。我需要在这里使用malloc,我该怎么做?

解决方法

要求

创建一个int *(即int **)数组

是一个矛盾。一个对象可以是一个数组或一个指针,一个指针数组,一个指向数组的指针或它们的某种组合。但是指针与数组不同,数组不是指针,指针也不是数组。当您访问数组时,数组通常会衰减到指针,但是仍然有2个不同的概念。

数组可以具有类型int *intptrArray[],类型int **intptrPtr是指向int的指针,这包括指向{{1 }},是指向int数组的指针或指向int数组的指针的指针。

要求

5号

具有误导性。根据C标准,对象的大小以字节为单位。通常无法使用int创建大小为5的数组,因为在许多平台上指针的大小为4或8个字节。 C标准不限制指针的可能大小,因此5是可能的,但我从未见过支持此功能的机器。我认为他是指数组的长度。

我认为最好问一下给您这个要求的那个人。

,

似乎您需要在文件范围中声明一个指针类型为int **的变量,如

int **intptrArray;

然后在函数中(例如在main中),您需要分配5类型的int *个元素的数组,例如

intptrArray = malloc( 5 * sizeof( int * ) );

然后在循环中,应使用一个指针初始化数组的每个元素,以动态地为类型为int的一个对象分配内存。

然后使用功能rand,需要为这些整数分配值。

例如

for ( size_t i = 0; i < 5; i++ )
{
    intptrArray[i] = malloc( sizeof( int ) );
    *intptrArray[i] = rand();
}