如何使用指针将值读入结构?

Kra*_*ken 5 c struct

我知道什么时候我必须打印我使用p->real等等,但是当我使用数字阅读时我该怎么写scanf

#include <stdio.h>

typedef struct {
    int real;
    int imaginary;
} complex;

void read(complex*);

void main() {
    complex c;
    read(&c);
}    

void read(complex* p){
    /*what to write in scanf*/
}
Run Code Online (Sandbox Code Playgroud)

jbe*_*das 12

你可以写:

scanf("%d %d", &p->real, &p->imaginary);
Run Code Online (Sandbox Code Playgroud)

但这在很大程度上取决于数字的格式.

  • 我可能会说'&(p-> real)`,只是为了清楚起见. (4认同)

Mar*_*all 6

scanf要求您传递要存储结果的内存空间的地址printf,与 不同,它只需要值(它不在乎值所在的位置)。要获取 C 中变量的地址,可以使用 & 运算符:

int a;
scanf("%d", &a);
Run Code Online (Sandbox Code Playgroud)

含义:将一个整数读入我指定的地址,在本例中是a的地址。结构体成员也是如此,无论结构体本身是否驻留在堆栈或堆上、通过指针访问等:

struct some_struct* pointer = ........;
scanf("%d", &pointer->member);
Run Code Online (Sandbox Code Playgroud)

这会将一个整数读入指针的地址加上结构体中成员的偏移量。