我想只在storeDataHere函数中将a1分配给ana [0],ana 1。
在saveData函数内部,只需要将每个data_array [0]传递给storeDataHere函数。
#include <stdio.h>
#include <string.h>
struct Analysis{
int a;
int b[10];
};
struct Analysis ana[2];
void storeDataHere(void* res)
{
// initialize a1;
struct Analysis a1;
a1.a = 1;
memset(a1.b, 0, 10*sizeof(int));
for(int i=0; i<10; i++)
a1.b[i] = 1;
// store a1 into ana[0], ana[1];
struct Analysis temp = res;
temp = a1;
}
void saveData(void* data, size_t size)
{
struct Analysis *data_array = data;
// pass two struct elements to storeDataHere;
storeDataHere((void*)data_array[0]);
storeDataHere((void*)data_array[1]);
}
int main()
{
// pass struct array ana to saveData
saveData( (void*)ana, sizeof(ana[0]));
for(int i=0; i<2; i++)
{
printf("\n%d\n", ana[i].a);
for(int j=0; j<10; j++)
printf("%d", ana[i].b[j]);
}
return 0;
}
以下是输出错误:
如果我保留这种功能结构,如何解决这个问题? (不要改变功能参数)
答案 0 :(得分:2)
见这里的答案:
document.getElementById('aboutUs').onclick = function() {
document.getElementById('newDiv').style.display = "none";
document.getElementById('iFrame').style.display = "block";
}
有关详细信息,请参阅链接。快乐的编码!!
答案 1 :(得分:1)
你试图分配一个指向对象的指针,这是不可能的,你应该有一个副本:
// Copy values
struct Analysis temp = *((struct Analysis*)res);
// or
// Copy pointer
struct Analysis *temp = res;
接下来的问题是,将data_array
的元素(如data_array[0]
)传递给函数(根据您的代码),您必须传递整个结构:
storeDataHere((void*)data_array);
答案 2 :(得分:1)
更改(您需要转换void指针然后取消引用):
struct Analysis temp = res;
到
struct Analysis temp = *((struct Analysis *)res);
另一次修正(施放并传递正确的类型):
storeDataHere((void*)data_array);