Code,  Study,  Tech

C复习:结构体与指针

晚上回来想登网站写文章结果WP账号全丢了,一直密码不对,后来一想可能是我上次删phpMyAdmin里user账号玩儿坏了,还没删库呢不跑路,重新登phpMyAdmin直接在wp_users表里重设user_pass,选择MD5加密,简单粗暴,回归~

直接贴代码吧,注释里都有写。

#include <stdio.h>

struct point
{
    int x;
    int y;
};

void getStruct(struct point);//传入结构体变量
void output(struct point);//输出结构体变量
//struct point inputPoint();
struct point *inputPoint(struct point *p);

void main()
{
    struct point m = {0, 0};
    inputPoint(&m);
    //getStruct(m);
    output(m);
}

//指向结构体的指针变量
//如果需要保护传入的结构不被函数修改:const struct oint *p;
struct point *inputPoint(struct point *p)
{
    printf("请输入p.x和p.y:\n");
    scanf("%d", &(p->x));  
    scanf("%d", &(p->y));
    
    //p->x等价于(*p).x
    
    printf("inputPoint: p.x = %d, p.y = %d\n", p->x, p->y);
    printf("inputPoint: p.x = %d, p.y = %d\n", (*p).x, (*p).y);

    return p;//返回指向结构体的指针变量(套路)
};


void getStruct(struct point p)
{
    printf("请输入p.x和p.y:\n");
    scanf("%d", &p.x);
    scanf("%d", &p.y);
    printf("getStruct: p.x = %d, p.y = %d\n", p.x, p.y);
}

void output(struct point p)
{
    //C在函数调用时是传值的
    //函数读入p的值后,没有任何东西回到main,所以用getStruct(m)还是{0,0}输出
    printf("output: p.x = %d, p.y = %d\n", p.x, p.y);
}



 

发表评论

电子邮件地址不会被公开。 必填项已用*标注