int *arr;arr={1,2,3,4,5}写法有问题啊没
时间: 2023-06-11 10:09:35 浏览: 47
是的,这种写法是错误的。在C++中,你需要使用大括号来初始化数组,例如:
```c++
int arr[] = {1, 2, 3, 4, 5};
```
或者使用动态内存分配来分配一个数组,例如:
```c++
int* arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
```
请注意,如果你使用动态内存分配来分配数组,则需要在使用完数组后使用delete[]来释放内存,例如:
```c++
delete[] arr;
```
相关问题
int *arr = (int *) malloc(sizeof(int) * 3);*arr={1,2,3}写法有问题吗
该写法存在问题,应该改为下面的形式:
```
int *arr = (int *) malloc(sizeof(int) * 3);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
```
在使用 malloc 函数分配内存时,它返回的是一个指向分配的内存块的指针,该内存块中的内容是未初始化的。因此,在这种情况下,您需要显式地将数组元素的值赋给分配的内存块。这可以通过使用索引运算符来完成,而不是尝试使用指针解引用运算符来赋值整个数组。
int *arr 配合malloc的写法
int *arr;
arr = (int*) malloc(size * sizeof(int));
//其中,size为需要动态分配的数组大小,sizeof(int)为每个元素所占的字节数
if(arr == NULL) {
printf("动态内存分配失败");
exit(1);
}
//此时,arr指向的是动态分配的数组首地址,可以通过下标访问元素
for(int i = 0; i < size; i++) {
arr[i] = i; //赋值
}
//记得在使用完动态分配的数组后,要使用free释放内存
free(arr);