我知道什么时候我必须打印我使用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)
但这在很大程度上取决于数字的格式.
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)
这会将一个整数读入指针的地址加上结构体中成员的偏移量。