函数中的restrict 是什么意思?

haolly 2013-09-12 03:57:38
今天看书,看到一个函数:

ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize)


其中的restrict是什么意思啊?

百度了下,好像说是不允许传进来的指针为重叠区域,也就是说,调用此函数时,程序员必须要确保pathname和buf所指向的区域没有重叠区域。
...全文
471 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-09-12
  • 打赏
  • 举报
回复

memcpy (); //其实可以看看这个函数man手册的!
haolly 2013-09-12
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
百度上的解释已经很好,http://baike.baidu.com/link?url=9tM1mI7nAdnHdDoa8ZZvet3PBULcXtqdF2Ntjds4O13sLJJESkbr9QZ5S43GFZy1zzqr7GvQCE73ZhllxibkdK [quote=引用 楼主 haolly 的回复:] 今天看书,看到一个函数:

ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize)
其中的restrict是什么意思啊? 百度了下,好像说是不允许传进来的指针为重叠区域,也就是说,调用此函数时,程序员必须要确保pathname和buf所指向的区域没有重叠区域。
[/quote] 搜索工作做的不到位啊
rocktyt 2013-09-12
  • 打赏
  • 举报
回复
restrict是c的关键词,只能修饰指针类型 大致如你所说,restrict限定的指针,不会出现多个指针指向同一块内存的情况,跟register关键字类似,这个也是提供给编译器优化的,因为保证只有一个指针会指向这块内存,编译器能更高效的进行一些处理而不用担心影响到别的指针
max_min_ 2013-09-12
  • 打赏
  • 举报
回复
只限定用于指针类型的,修改该指针所指向内容的操作全部都是基于该指针的,不存在其它进行修改操作的途径。 google下!
图灵狗 2013-09-12
  • 打赏
  • 举报
回复
百度上的解释已经很好,http://baike.baidu.com/link?url=9tM1mI7nAdnHdDoa8ZZvet3PBULcXtqdF2Ntjds4O13sLJJESkbr9QZ5S43GFZy1zzqr7GvQCE73ZhllxibkdK
引用 楼主 haolly 的回复:
今天看书,看到一个函数:

ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize)
其中的restrict是什么意思啊? 百度了下,好像说是不允许传进来的指针为重叠区域,也就是说,调用此函数时,程序员必须要确保pathname和buf所指向的区域没有重叠区域。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧