gpt4 book ai didi

结构体的 C 指针 - 段错误

转载 作者:行者123 更新时间:2023-11-30 16:47:45 25 4
gpt4 key购买 nike

我在使用该程序时遇到问题。非常简单。我需要从我创建的指针向我的结构体分配值,但我不断遇到段错误。任何想法我做错了什么:

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

struct problem37
{
int a;
int b;
int c;
};

int main()
{
printf("Problem 37\n");

//create struct
struct problem37 myStruct;

//create the pointer
int* p;
int* q;
int* r;

*p = 1;
*q = 5;
*r = 8;

//read the data into the struct using the pointers
myStruct.a = *p;
myStruct.b = *q;
myStruct.c = *r;

printf("%d\n", myStruct.a);
printf("%d\n", myStruct.b);
printf("%d\n", myStruct.c);

return 0;
}

最佳答案

您正在为 *p*q*r 赋值,但它们未初始化:它们是指向的指针到随机存储器。

您需要初始化它们,或者为它们分配在堆中分配的新值(使用malloc):

int *p = (int*) malloc( sizeof(int) );
*p = 1;

或者让它们指向一个已经存在的值:

int x;
int *p = &x;
*p = 1; // it's like doing x=1

关于结构体的 C 指针 - 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225235/

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