我遇到了嘗試將結構指針傳遞給將指針設置爲指向多維數組的特定行的函數的問題。將結構指針傳遞給C中的函數以解引用數組
這是結構的聲明:
typedef struct PartitionInfoStruct
{
Partition definition;
u16 start;
u16 size;
StringLiteral* desc;
} PartitionInfo;
下面是函數:
void readPartitionTable(Partition partition, PartitionInfo* partitionInfo)
{
switch(installedFlashDevice)
{
case S25FL032P:
partitionInfo = &PARTITION_TABLE_S25FL032P[partition];
break;
case SST26VF032B:
partitionInfo = &PARTITION_TABLE_SST26VF032B[partition];
break;
default:
//do nothing
break;
}
ASSERT(partitionInfo != NULL);
}
這是我正在電話:
PartitionInfo* partitionInfo = NULL;
readPartitionTable((Partition)counter, partitionInfo);
出於某種原因當致電readPartitionTable
,然後解除引用partitionInfo
後,我沒有得到所需的結果 - 即ASSERT失敗。
斷言* *內部功能不成?你確定'counter'是'S25FL032P'或'SST26VF032B'?然而,你還有另外一個問題:你只是分配給函數內的指針的本地副本,這對調用者傳入的指針沒有任何影響...... – aschepler
_calling readPartitionTable,然後解除引用partitionInfo之後_你的意思是事後來自功能或斷言功能失敗? –
@aschepler:爲什麼「*'counter' *」?交換機的參數是'installedFlashDevice'。 – alk