gpt4 book ai didi

c - 指向结构的指针作为参数,函数内引用的成员产生奇怪的值

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:50 25 4
gpt4 key购买 nike

我的任务是将快速匹配分配算法添加到 MINIX 中,因此需要大量使用结构。但是,我遇到了一些我找不到任何解决方案资源的东西。

下面的代码是我用来演示我遇到的问题的一个简单示例。

#include <stdlib.h>
#include <stdio.h>

struct some_struct {
int h_count;
};

void why();

struct some_struct * myStruct;

int main(){
myStruct = (struct some_struct *) malloc(sizeof(struct some_struct));
myStruct->h_count=0;

printf("%d\n", myStruct->h_count);
why(&myStruct);

return 0;
}

void why(struct some_struct * t_some_struct){
printf("%d\n", t_some_struct->h_count);
}

函数 whyprintf 的输出与 main 中给出的输出不同。 why 打印的值是一个看似随机的数字,每次程序运行时都会发生变化。

输出:

0
7870280
Press any key to continue . . .`

每次运行时 7870280 都会发生变化。我会假设它正在打印某种内存值或其他东西,但这只是一个猜测,因为我真的不知道。

因此,我想我会在这里问我身边的其他人的利益:

  • 为什么会这样?
  • 我的语法是这里的问题吗?
  • 如何使用指向结构的指针作为某些函数的参数,然后在函数范围内引用给定结构的成员? (我想将 t_some_struct 的 h_count 设为 0)

谢谢

最佳答案

函数 why 需要一个指针,而您将指针传递给指针。调用为why(myStruct);(顺便说一下,myStruct 是一个全局变量,所以这里传递有点多余)。您访问结构成员的其余部分没问题。

没有直接关系,但有一些一般性建议:

1) 为 main() 使用标准原型(prototype),例如 int main(int argc, char*argv[])
2) 强制转换 malloc 的结果是不必要的 error-prone.

关于c - 指向结构的指针作为参数,函数内引用的成员产生奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786745/

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