VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 568|回复: 2

传递指针参数得不到想要的值

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-24 11:20:01 | 显示全部楼层 |阅读模式
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"time.h"

#define MAX_PKT 1024

#define MAX_SEQ 7

typedef enum {FALSE, TRUE} boolean;

typedef unsigned int seq_nr;

typedef enum  {dat, ack, nak} frame_kind;

typedef enum event_type {timeout, frame_arrival};

typedef struct
{        frame_kind kind;
        seq_nr seq;
        seq_nr ack;
        char info[1024];
} frame;
void from_network_layer(frame *r)
{               
        frame fra;
        r = &fra ;
        printf("输入信息:");
        memset(fra.info, 0, strlen(fra.info));
        for(int i = 0; ; i++)
        {
                fra.info[i] = getchar();
                if ('\n' == fra.info[i])
                {
                        fra.info[++i] = '\0';
                        break;
                }
        }
}
void main()
{
        seq_nr ack = 0;
        frame send, rev;
        event_type event;
        from_network_layer(&send);
        send.kind = dat;
}
为什么SEND得不到from_network_layer形成的FRA.INFO
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-10 11:45:02 | 显示全部楼层
frame fra;
r = &fra ;
fra在栈里边,函数退出后就没了
按你main()中的使用方法,这样改即可:
void from_network_layer(frame *fra)
{               
        printf("输入信息:");
        memset(fra->info, 0, strlen(fra->info));
        for(int i = 0; ; i++)
        {
                fra->info[i] = getchar();
                if ('\n' == fra->info[i])
                {
                        fra->info[++i] = '\0';
                        break;
                }
        }
}


回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-2-10 14:30:01 | 显示全部楼层
谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表