Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

struct - How to pass structure by reference in C?

I have a structure that I need to use for two diferent variables (firstVar & secondVar). I don't want to use vectors , just 2 plain structures. Since I don't want to duplicate the code that takes the user input, I would like to create an action that I call both for (firstVar and secondVar)

I would like to be able to pass the structure to the action by reference. Here is my code, I still can not figure out what I am doing wrong.

#include <stdio.h>
typedef struct {
    int id;
    float length;
} tMystruct;
tMystruct firstVar;
tMystruct secondVar;

void readStructs(tMystruct *theVar)
{
    scanf("%d",theVar.id);
    scanf("%f",theVar.length);
}

int main(void)
{
    readStructs(&firstVar);
    readStructs(&secondVar);
    return 0;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is the problem,

void readStructs(tMystruct *theVar)
{
scanf("%d",theVar.id); //<------problem 
scanf("%f",theVar.length); //<------problem 
}

You should access Structure pointer member using -> operator and also you're missing & that will eventually cause a segmentation fault.

Here is the modified code,

void readStructs(tMystruct *theVar)
{
scanf("%d",&theVar->id);
scanf("%f",&theVar->length);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...