我应该如何将指针初始化为文字数组?
我希望*grid指向新分配的int数组 {1,2,3}。
int *grid = new int[3];
*grid = {1, 2, 3};
谢谢。
你不能以这种方式初始化动态分配的数组。也不能以这种方式赋值给一个数组(动态或静态)。这种语法只在初始化静态数组时有效,即:
int a[4] = {2, 5, 6, 4};
我的意思是,即使是下面这个也是不合法的:
int a[4];
a = {1, 2, 3, 4}; //Error
在您的情况下,您只能手动复制每个元素的值。
for (int i = 1; i<=size; ++i)
{
grid[i-1] = i;
}
你可以使用STL算法来避免显式循环,但思路是相同的。
在C++0x中,这些内容可能已经合法了,我不确定。
@above的grid指向数组grid[]的第一个元素存储的地址位置。由于在C++中,数组是存储在连续的内存位置上的,因此您可以通过递增grid并取消引用它来遍历数组。
但是将grid称为(int*)是不正确的。
我不确定这是否显而易见,但你可以在一行代码中完成这个任务。
int *grid = new int[3] {1, 2, 3};
既然我们谈论的是C++,你也可以将其拆分为两个文件。其中你的.h
文件包含:
int *grid;
而你的.cpp
文件包含:
grid = new int[3] {1, 2, 3};
int grid[] = {1 , 2 , 3};