如何解决为什么这个数组不初始化?
| 这实际上是我要尝试的操作,而不是实际的源代码。
namespace namespace {
int array [3];
}
namespace::array={1,2,3}
我的gcc要求一个表达式,但我不确定该怎么做。我是否必须每个要素 namespace::array[1];
?
解决方法
您只能在定义中使用初始化程序列表:
int array[3] = { 1,2,3 };
如果您使用:
int array[3];
那么您需要使用
array[0] = 1;
array[1] = 2;
array[2] = 3;
,尽管gcc混合了C99和C ++,但gcc允许这样做:
#include <string.h>
int a[3];
int main()
{
memcpy(a,(int[3]){ 1,3},sizeof(a));
}
!
,namespace ns { int array[3] = {1,3}; }
怎么样?
,有几种方法:
1)明确设置每个元素的值:
namespace ns {
int array [3];
}
ns::array[0]=1;
ns::array[1]=2;
ns::array[2]=3;
\\\\ or if they should contain consequtive values:
\\\\ for (size_t i = 0; i < 3; ++i)
\\\\ ns::array[i] = i + 1;
2)如果要初始化静态数组来代替其声明,则可以按以下方式移动它的初始化列表:
namespace ns {
int array[3] = {1,3};
}
3)使用typedef
:
namespace ns {
typedef int array_t[3];
}
ns::array_t array = {1,3};
3)您还可以对std :: tr1 :: array进行一些研究,可以将其用作:
std::tr1::array<int,3> arr = {1,3};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。