初始化函数中动态数组的值(C语言)
这是我的代码:初始化函数中动态数组的值(C语言),c,arrays,pointers,C,Arrays,Pointers,这是我的代码: void init_array(int** array) { *array = (int*) malloc(3 * sizeof(int)); /* ???? **(array+2) = 666; */ return; } void init(int* array, int* length) { *length = 3; *(array+0) = 0; *(array+1) = 1; *(array+2) = 2; return;
void init_array(int** array) {
*array = (int*) malloc(3 * sizeof(int));
/* ???? **(array+2) = 666; */
return;
}
void init(int* array, int* length) {
*length = 3;
*(array+0) = 0;
*(array+1) = 1;
*(array+2) = 2;
return;
}
int main(void) {
/* Variables */
int array_length;
int* array;
/* Initialize */
init_array(&array);
init(array, &array_length);
free(array);
return 0;
}
我的问题是:如何在函数init_array()中初始化数组的值
我曾尝试过以下事情:
**(数组+2)=666代码>
*(*(数组+2))=666代码>
*数组[2]=666代码>
**数组[2]=666代码>
**(array+2)
应该可以工作,但它给了我一个分割错误
如果您能回答我的问题,我将不胜感激,因为我不知道C中的指针实际上是如何工作的。您已经将指针的地址传递给了函数:
array
要取消引用以获取指针,请执行以下操作:
*array
然后对结果应用数组下标运算符:
(*array)[2]
或相当于:
*((*array) + 2)
括号是必需的,因为数组下标运算符[]
的优先级高于取消引用运算符*
一般来说,您应该尽可能使用数组下标运算符,因为它更易于阅读。尝试
(*array)[2]=666代码>并编译所有警告。我熟悉C++,但我需要使用<代码>新< /Calp>运算符或任何声明对象,然后在指定地址中创建值。C中没有新的。