VerySource

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

不做为参数,不能使用全局变量,不能做为返回值,在别的函数中如何使用这个变量值

[复制链接]

1

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-2-8 14:30:01 | 显示全部楼层 |阅读模式
是这样。这个是需要使用的结构体
typedef struct  
{
        char name[256];        // filename
        uint32_t size; // file size
        uint8_t * buffer; // buffer
        uint8_t ver; // version
}file_t;
我打开文件的函数有一个文件描述符fd,打开文件的函数使用后在进行读写操作,以打开文件的函数返回值file_t指针作为参数传给读写函数,打开文件函数中的fd值怎么才能在读写函数中使用?fd不做为参数,不能做为返回值。如果使用全局变量,我连续open两个文件fd的值就变成第二个文件的描述符了,这个也不行啊 ?
回复

使用道具 举报

0

主题

9

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-31 14:15:01 | 显示全部楼层
看的好乱
回复

使用道具 举报

0

主题

63

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-3-31 22:45:01 | 显示全部楼层
你牛,都寫到main里去
回复

使用道具 举报

0

主题

9

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-4-1 01:00:01 | 显示全部楼层
为什么不可以用参数传进去
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-1 20:45:01 | 显示全部楼层
只能说是一个变态的要求.
回复

使用道具 举报

1

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-4-2 13:15:01 | 显示全部楼层
我也没有办法啊?我也不想这样做。但是要求是,函数参数,返回值(那个结构体)是不能乱改的。大家帮个忙
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-4-3 00:00:01 | 显示全部楼层
实现一个全局的注册表,打开一个就放进去,然后使用的人根据名字去查找。。。- -b
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-4-3 06:00:01 | 显示全部楼层
“返回值(那个结构体)是不能乱改的”根传递参数有什么关系?
回复

使用道具 举报

1

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-4-3 21:15:01 | 显示全部楼层
实现一个全局的注册表,打开一个就放进去,然后使用的人根据名字去查找。。。- -b
用不了注册表,系统是linux。
“返回值(那个结构体)是不能乱改的”根传递参数有什么关系?
就是说我想要的文件描述符不能作为参数传给下一个要使用此文件描述服的函数
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-4-4 11:15:01 | 显示全部楼层
不是说系统的那个“register”,是你自己实现一个“注册信息用的表”,比如通过std::map实现。

你传给它它就一定会修改吗?那样你通过值传递而不要通过指针就是了,他要是非要修改,也改不了实参。
回复

使用道具 举报

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

本版积分规则

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

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