我知道何时需要打印我使用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*/
}
答案 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);