首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++初始化数组指针

C++初始化数组指针
EN

Stack Overflow用户
提问于 2011-06-17 21:18:46
回答 4查看 34.5K关注 0票数 14

如何初始化指向文字数组的指针?

我希望*grid指向新分配的int数组{1,2,3}。

代码语言:javascript
复制
int *grid = new int[3];
*grid = {1, 2, 3};

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-17 21:22:58

您不能以这种方式初始化动态分配的数组。这两种方法都不能以这种方式分配给数组(动态或静态)。该语法仅在初始化静态数组时有效,即

代码语言:javascript
复制
int a[4] = {2, 5, 6, 4};

我的意思是,即使是以下内容也是非法的:

代码语言:javascript
复制
int a[4];
a = {1, 2, 3, 4}; //Error

在您的情况下,除了手动复制每个元素的velue之外,什么也做不了

代码语言:javascript
复制
for (int i = 1; i<=size; ++i)
{
    grid[i-1] = i;
}

您可以通过使用stl算法来避免显式循环,但其思想是相同的。

其中一些可能在C++0x中是合法的,我不确定。

票数 10
EN

Stack Overflow用户

发布于 2011-06-18 10:37:15

@上面的网格指向存储数组grid[]的第一个元素的地址位置。由于在C++中数组存储在连续的内存位置,因此您可以通过递增网格并取消对其的引用来遍历数组。

但是调用网格an (int*)是不正确的。

票数 1
EN

Stack Overflow用户

发布于 2020-12-16 06:17:24

我不确定这是否是显而易见的,但你可以在一行中完成。

代码语言:javascript
复制
int *grid = new int[3] {1, 2, 3};

因为这是C++,所以你也可以把它分成两个文件。其中,您的.h文件包含:

代码语言:javascript
复制
int *grid;

并且您的.cpp文件包含:

代码语言:javascript
复制
grid = new int[3] {1, 2, 3};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6386329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档