[英]C pointers malloc inside function call
我有這樣的等級制度:
main()
{
int i;
myStruct *devices = NULL;
myFunc1(&devices);
for (i = 0; i < 5; i++)
{
printf("MAC: %s, Name: %s, COD: %s\n\r", devices[i].field1, devices[i].field2, devices[i].field3);
}
}
void myFunc1(myStruct **devices)
{
myFunc2(devices);
}
void myFunc2(myStruct **devices)
{
int i;
*devices = malloc(sizeof(myStruct) * 5);
for (i = 0; i < 5; i++)
{
(*devices[i]).field1 = "test1";
(*devices[i]).field2 = "test2";
(*devices[i]).field3 = "test3";
}
}
在主要當我訪問i = 0的設備[i]時,它沒問題,但是當i> 0時發生SegFault,我無法理解如何正確訪問它。
由於運算符優先級 ,表達式*devices[i]
被解析為*(devices[i])
,這不是你想要的。 您想要使用(*devices)[i]
。
我很確定
(*devices[i])
應該
((*devices)[i])
由於[]運算符優先於*運算符。 您想要取消引用指針,然后訪問該數組。
我認為問題在於你正在調用錯誤的結構。 首先嘗試替代
*devices[i]).field1
至
*devices[i])->field1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.