[软件资料] C语言使用别名的技巧

[复制链接]
866|9
 楼主| AdaMaYun 发表于 2024-3-5 16:00 | 显示全部楼层 |阅读模式

考虑如下的例子:

  1. void func1( int *data )
  2. {   
  3.     int i;     
  4.     for(i=0; i<10; i++)   
  5.     {         
  6.         anyfunc( *data, i);   
  7.     }
  8. }

尽管*data的值可能从未被改变,但编译器并不知道anyfunc函数不会修改它,所以程序必须在每次使用它的时候从内存中读取它。如果我们知道变量的值不会被改变,那么就应该使用如下的编码:

  1. void func1( int *data )
  2. {   
  3.     int i;   
  4.     int localdata;     
  5.     localdata = *data;   
  6.     for(i=0; i<10; i++)   
  7.     {         
  8.         anyfunc (localdata, i);   
  9.     }
  10. }

这为编译器优化代码提供了条件。

LOVEEVER 发表于 2024-3-9 20:30 | 显示全部楼层
尽管*data的值可能从未被改变,但编译器并不知道anyfunc函数不会修改它,所以程序必须在每次使用它的时候从内存中读取它
星辰大海不退缩 发表于 2024-3-11 12:25 | 显示全部楼层
直接将指针的数值取出来进行计算是非常快捷的方法
OKAKAKO 发表于 2024-3-11 15:29 | 显示全部楼层
星辰大海不退缩 发表于 2024-3-11 12:25
直接将指针的数值取出来进行计算是非常快捷的方法

确实这个方法非常实用,而且非常快速
OKAKAKO 发表于 2024-3-11 17:33 | 显示全部楼层
当然这些内存使用层面的还得深入研究
小夏天的大西瓜 发表于 2024-3-19 08:13 | 显示全部楼层
程序必须在每次使用它的时候从内存中读取它
小小蚂蚁举千斤 发表于 2024-3-19 13:00 | 显示全部楼层
变量的值不会被改变,那么就应该使用固定的直接索引,高效省时
中国龙芯CDX 发表于 2024-3-21 15:19 | 显示全部楼层
变量的值不会被改变,那么就应该使用固定的直接索引
jf101 发表于 2024-3-22 11:29 | 显示全部楼层
变量的值不会被改变,那么就应该使用固定的直接索引
szt1993 发表于 2024-3-25 15:34 | 显示全部楼层
编译器并不知道anyfunc函数不会修改它,只是机械的执行程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

308

主题

2692

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部