在c语言中如何给没有定义长度的数组赋值?
时间: 2023-10-01 22:06:50 浏览: 44
在 C 语言中,如果数组的长度没有被定义,可以使用动态内存分配来分配数组的空间,然后再给数组赋值。具体操作如下:
1. 使用 `malloc()` 函数分配内存空间,例如:`int *arr = (int *)malloc(sizeof(int) * n)`,其中 `n` 为数组的长度。
2. 使用循环结构遍历数组,并使用赋值语句为数组元素赋值。
示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int *arr = (int *)malloc(sizeof(int) * n);
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("数组元素为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
以上代码演示了动态分配数组空间并为其赋值的过程。注意,使用完动态分配的数组后,需要使用 `free()` 函数释放空间,避免内存泄漏。
相关问题
c语言用scanf给一维数组赋值
可以使用循环结构和scanf函数来给一维数组赋值,示例代码如下:
```c
#include <stdio.h>
int main() {
int arr[5]; // 定义长度为5的一维数组
int i;
// 循环读入5个整数赋值给数组
for (i = 0; i < 5; i++) {
printf("请输入第%d个元素的值:", i + 1);
scanf("%d", &arr[i]);
}
// 输出数组中的元素
printf("数组中的元素为:");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在上述代码中,通过循环结构和scanf函数,分别读入5个整数并赋值给数组中的元素,然后再通过循环遍历数组输出每个元素的值。
C语言中怎么定义高维指针数组,如果要给数组赋值初始化,该怎么写
定义高维指针数组可以使用类似于以下语法:
```c
数据类型 (*指针变量名)[维数1][维数2]...[维数n];
```
其中,`指针变量名`是一个指向多维数组的指针,`维数1`、`维数2`、...、`维数n` 分别表示每一维数组的长度。
例如,定义一个 int 类型的三维指针数组,可以使用以下语法:
```c
int (*arr)[3][4];
```
这里的 `arr` 是一个指向三维数组的指针,第一维长度为未知,第二维长度为 3,第三维长度为 4。
给数组赋值初始化的方法可以使用循环遍历数组,逐个赋值。例如,给上面定义的三维数组赋值可以使用以下代码:
```c
int arr_value[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24},
}
};
// 定义一个指向三维数组的指针
int (*arr)[3][4] = NULL;
// 给指针赋值,指向数组
arr = arr_value;
// 遍历数组
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 4; ++k) {
printf("%d ", arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
```
这里定义了一个 `arr_value` 数组,然后将指针 `arr` 指向这个数组。最后使用三层循环遍历数组,逐个输出数组元素的值,即可完成数组的赋值初始化。