如何初始化指向文字数组的指针?
我希望*grid指向新分配的int数组{1,2,3}。
int *grid = new int[3];
*grid = {1, 2, 3};谢谢。
发布于 2011-06-17 21:22:58
您不能以这种方式初始化动态分配的数组。这两种方法都不能以这种方式分配给数组(动态或静态)。该语法仅在初始化静态数组时有效,即
int a[4] = {2, 5, 6, 4};我的意思是,即使是以下内容也是非法的:
int a[4];
a = {1, 2, 3, 4}; //Error在您的情况下,除了手动复制每个元素的velue之外,什么也做不了
for (int i = 1; i<=size; ++i)
{
grid[i-1] = i;
}您可以通过使用stl算法来避免显式循环,但其思想是相同的。
其中一些可能在C++0x中是合法的,我不确定。
发布于 2011-06-18 10:37:15
@上面的网格指向存储数组grid[]的第一个元素的地址位置。由于在C++中数组存储在连续的内存位置,因此您可以通过递增网格并取消对其的引用来遍历数组。
但是调用网格an (int*)是不正确的。
发布于 2020-12-16 06:17:24
我不确定这是否是显而易见的,但你可以在一行中完成。
int *grid = new int[3] {1, 2, 3};因为这是C++,所以你也可以把它分成两个文件。其中,您的.h文件包含:
int *grid;并且您的.cpp文件包含:
grid = new int[3] {1, 2, 3};https://stackoverflow.com/questions/6386329
复制相似问题