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

时间:2010-10-01 05:15:31

标签: 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*/
}

3 个答案:

答案 0 :(得分:12)

你可以写:

scanf("%d %d", &p->real, &p->imaginary);

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

答案 1 :(得分:4)

scanf要求您传递要存储结果的内存空间的地址,这与printf不同,int a; scanf("%d", &a); 只需要值(它不能小心其中值所在的位置)。要在C中获取变量的地址,请使用&amp;操作者:

struct some_struct* pointer = ........;
scanf("%d", &pointer->member);

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

{{1}}

这将读取指针的地址加上成员到结构中的偏移量的整数。

答案 2 :(得分:-2)

使用以下代码:

scanf("%d",&pointer->variable);