gpt4 book ai didi

c - 如何初始化值?结构体数组?

转载 作者:行者123 更新时间:2023-11-30 19:27:23 25 4
gpt4 key购买 nike

我试图在程序开始时初始化这个值。我没有得到预期的值,所以我可能对指针做了错误的事情。

struct TLBentry{
unsigned int physicalAddress;
unsigned int virtualAddress;
};

struct pageTableEntry{
char validFlag;
char dirty;
unsigned int physicalAddress;
};
  memSys->virtMem = malloc( sizeof( int ) * sizeVM * pageSize );
memSys->tlb = malloc( sizeof(struct TLBentry) * sizeTLB );
memSys->pgTable = malloc( sizeof(struct pageTableEntry) * sizeVM );

for( int i=0; i < memSys->sizeTLB; i++ ){
struct TLBentry* entry = &(memSys->tlb[i]);
entry->virtualAddress = i;
entry->physicalAddress = i;
}
for( int i=0; i < memSys->sizeVM; i++ ){
memSys->pgTable[i].physicalAddress = i;
memSys->pgTable[i].validFlag = 0;
}
for( int i=0; i < memSys->sizePM; i++ ){
memSys->pgTable[i].physicalAddress = i;
memSys->pgTable[i].validFlag = 1;
}
printf("initialize %d\n", memSys->tlb[1].virtualAddress );

打印语句应该是“initialize 1”,但它打印出“initialize 0”

我不知道发生了什么。

最佳答案

你知道C语言中=和==运算符的区别吗?您没有为您的物理地址赋予值 i,您在这一行中什么也没做。

entry->physicalAddress == i;
entry->virtualAddress == i;

在 C 语言中,a == b 并不是将 b 赋值给 a,它只是检查它们是否相等。

在这一行中,为什么要打印 tlb[1]?你知道 C 中数组从 0 开始吗​​?

printf("initialize %d\n", memSys->tlb[1].virtualAddress );

关于c - 如何初始化值?结构体数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55802662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com