我有一个用C语言定义的结构
struct problem_spec_point {
int point_no;
double x;
double y;
int bc;
};
我有一个长度为6的这些结构的数组,前四个结构在初始化时显式定义。
static struct point points[6] =
{
{0, 1, 2, 5},
{0, 1, 2, 6},
{0, 1, 2, 7},
{0, 1, 2, 8},
};
我可以稍后添加第五和第六个结构:points[4] = (struct point) {0,1,2,12}; points[5] = (struct point) {3,3,3,3};
但是假设我想一次添加这两个(或多个)连续的结构。points[4] = {(struct point) {0,1,2,12}, (struct point) {3,3,3,3},};
有没有这样的方法呢?
显然,我尝试了上面列出的语法。
实际上,我的代码有一个长度为3n+6的数组。我有一个for循环,为前3n个结构赋值,但最后6个结构有一个不同的奇怪模式。
for(int i = 0; i < 3n; i++)
{
point[i] = stuff;
}
//odd points here at end of array
我可以切换顺序并做一些索引更改:
static struct point points[3n+6] =
{
last points first
}
for(int i = 6; i < 3n+6, i++
{
point[i]=stuff;
}
但是我不想。我对C不是很熟悉,而且我很好奇。
这是我的第一篇文章,所以请原谅我没有遵循正常的格式。
2条答案
按热度按时间w7t8yxp51#
最好的方法可能只是用简单可读的代码输入它:
或者,对于具有相同值的大间隔等,使用
memcpy
。也许沿着这样的:(This代码可以通过使用
restrict
指针稍微优化。ru9i0ody2#
Lundin正确地告诉我们可以使用
memcpy
,但他没有明确地提到可以重新定义不同的值关于
memcpy