为什么不能用int *arr定义数组
时间: 2023-06-11 21:10:03 浏览: 78
在C语言中,可以使用int *arr来定义一个数组,但是这并不是一个好的实践,因为它只定义了一个指向整数的指针,并没有真正的分配内存空间来存储整数数组的元素。因此,使用int *arr定义数组,需要在使用前手动分配内存空间,如使用malloc函数,然后在使用完后还需要手动释放内存,否则会导致内存泄漏的问题。为了避免这些问题,建议使用int arr[]的形式定义数组,这样编译器会自动分配内存空间,并在作用域结束时自动释放内存。
相关问题
int *arr如何定义一个数组
定义一个整型数组可以使用以下语法:
```c
int arr[SIZE]; // 定义一个大小为 SIZE 的整型数组
```
其中,`SIZE` 是数组的大小,可以是一个整数或者一个宏定义。例如:
```c
#define SIZE 10
int arr[SIZE]; // 定义一个大小为 10 的整型数组
```
也可以使用动态内存分配来定义数组,例如:
```c
int size = 10; // 数组大小
int *arr = (int *) malloc(sizeof(int) * size); // 动态分配内存
```
需要注意的是,在使用完动态分配的数组后,需要使用 `free(arr)` 来释放内存。
int* 申明的数组 长度
在使用 `int*` 申明的数组中,没有固定的长度。这种申明方式实际上是定义了一个指向 `int` 类型的指针,可以通过动态内存分配的方式来为其分配内存空间。例如,可以使用 `malloc()` 函数来为其分配一定大小的内存空间,如 `int* arr = (int*) malloc(sizeof(int) * n)`,其中 `n` 表示分配的元素个数。当然,在使用完该数组后,也需要使用 `free()` 函数来释放其所占用的内存空间,以避免内存泄漏的问题。