打印
[软件资料]

C语言使用别名的技巧

[复制链接]
562|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AdaMaYun|  楼主 | 2024-3-5 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

考虑如下的例子:

void func1( int *data )
{   
    int i;     
    for(i=0; i<10; i++)   
    {         
        anyfunc( *data, i);   
    }
}

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

void func1( int *data )
{   
    int i;   
    int localdata;     
    localdata = *data;   
    for(i=0; i<10; i++)   
    {         
        anyfunc (localdata, i);   
    }
}

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

使用特权

评论回复
沙发
LOVEEVER| | 2024-3-9 20:30 | 只看该作者
尽管*data的值可能从未被改变,但编译器并不知道anyfunc函数不会修改它,所以程序必须在每次使用它的时候从内存中读取它

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-3-11 12:25 | 只看该作者
直接将指针的数值取出来进行计算是非常快捷的方法

使用特权

评论回复
地板
OKAKAKO| | 2024-3-11 15:29 | 只看该作者
星辰大海不退缩 发表于 2024-3-11 12:25
直接将指针的数值取出来进行计算是非常快捷的方法

确实这个方法非常实用,而且非常快速

使用特权

评论回复
5
OKAKAKO| | 2024-3-11 17:33 | 只看该作者
当然这些内存使用层面的还得深入研究

使用特权

评论回复
6
小夏天的大西瓜| | 2024-3-19 08:13 | 只看该作者
程序必须在每次使用它的时候从内存中读取它

使用特权

评论回复
7
小小蚂蚁举千斤| | 2024-3-19 13:00 | 只看该作者
变量的值不会被改变,那么就应该使用固定的直接索引,高效省时

使用特权

评论回复
8
中国龙芯CDX| | 2024-3-21 15:19 | 只看该作者
变量的值不会被改变,那么就应该使用固定的直接索引

使用特权

评论回复
9
jf101| | 2024-3-22 11:29 | 只看该作者
变量的值不会被改变,那么就应该使用固定的直接索引

使用特权

评论回复
10
szt1993| | 2024-3-25 15:34 | 只看该作者
编译器并不知道anyfunc函数不会修改它,只是机械的执行程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

248

主题

1917

帖子

3

粉丝