此刻我正在努力解决这个问题。我有一个union,它有一个成员struct +变量,成员struct还包含一个成员struct + variables,这个成员struct包含变量。
我发现在尝试为特定变量赋值时,我最终会覆盖一些先前分配的数据。我很好,这是因为指针没有增加。下面是一些示例代码:
$.ajax({
url: 'destinationURL',
type: "POST", //This is what you should chage
dataType: "application/json; charset=utf-8",
username: "FAA/uttam ctr dhakal", // Most SAP web services require credentials
password: "MEETfamily2018",
processData: false,
contentType: "application/json",
headers: {"Access-Control-Allow-Origin" : "(TRIED WITH Destination/Source
Both URLs)",
},
success: function () {
alert("success");
},
error: function (xhr, ajaxOptions, thrownError) { //Add these parameters to
display the required response
alert(xhr.status);
alert(xhr.responseText);
},
});
我得到以下输出:
struct Scale
{
char Scale_Name[5];
char notes[10];
};
struct Instrument
{
char Inst_Name[5];
struct Scale scales[5];
};
union Whole_Inst
{
char InstrumentCount;
struct Instrument Instruments[2];
};
union Whole_Inst Instrument1;
int main(void)
{
char i, j, k;
char TempArr[5] = {0x01, 0x02, 0x03, 0x04, 0x05};
char NUMBER_OF_INST = 1;
Instrument1.InstrumentCount = TempArr[0];
printf("InstCount = 0x%x\n", Instrument1.InstrumentCount);
for(j = 0; j < NUMBER_OF_INST; j++)
{
for(i = 0; i < 4; i++)
{
Instrument1.Instruments[0].Inst_Name[i] = TempArr[i+1];
printf("\nInstName[%d] = 0x%x", i,
Instrument1.Instruments[0].Inst_Name[i]);
}
}
printf("\n\nInstCount = 0x%x\n", i, Instrument1.InstrumentCount);
system("PAUSE");
return 0;
}
有人可以指出我正确的方向。
亲切的问候 大卫
答案 0 :(得分:3)
您的union
允许您存储 计数或Inustrument
数组,但不能同时存储两者。这两个数据共享相同的内存。如果你改变了一个,你就会写下另一个使用的内存。
如果您要同时存储计数和数组,则需要使用struct
而不是union
。