c语言c99标准_C语言的灵魂指针,配合这个新增的关键字,能够生成更高效的程序...

正如我前面的文章提到的,C语言虽然已经比较成熟,但是近些年来也是有所发展的——比如增加了许多新特性。遗憾的是,可能因为C语言程序员的工资比不过互联网程序员,国内很多教材比较老旧,几乎不涉及近些年来C语言新增的新特性。

8f964aedfd8472b412b4df077faf713a.png

C语言程序员的工资比不过互联网程序员

事实上,目前大多数平台已经至少支持 C99 标准,而 C99 中新增的一些特性或者关键字的确非常好用,能够大大提升C语言程序的开发效率,以及增加代码可读性。

restrict 关键字

例如,C99 中新增了 restrict 关键字,它能够帮助编译器优化C语言代码,生成效率更高的程序。

确切来说,restrict 是为C语言指针服务的关键字,程序员可以通过 restrict 通知编译器指针索引内存的一些特征,便于编译器有选择的优化代码,生成高效程序。

restrict 关键字修饰指针时,用于通知编译器只有该指针以及该指针的派生值(例如指针+1)才用于访问指向的对象,别的指针不会和该指针一样指向相同的对象。这有助于编译器执行优化,稍后读者可通过一个例子看到这一点。

f613831d04111aec69d3ef4d4439dcc2.png

这有助于编译器执行优化

如果编译器不能确定上面这样的特征,将不敢执行优化,否则可能导致程序出现“未定义”的行为。原则上来说,合理的使用 restrict 关键字,可以让最终的C语言程序提升相当多的性能。

实例

接下里,本文将以两个简单实例讨论 restrict 关键字的作用,请看下面这段C语言代码:

void updatePtrs(size_t *ptrA, size_t *ptrB, size_t *val){ *ptrA += *val; *ptrB += *val;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ee的小程序_Java EE 8 –为更多设备提供更多应用程序

java ee的小程序如果我不喜欢夏天的一件事,那就是事实是没有太多要分享或谈论的新闻。 谁决定将Java Day Tokyo置于今年的这个无聊的时间里,做得很好,并给了我一个写关于新的和即将到来的Java EE 8规范的博客帖子的机会,其中丰富了…

java随机姓名_Java生成随机姓名、性别和年龄的实现示例

一、定义实体类Person,封装生成的数据package net.dc.test;public class Person {private String name;private String sex;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public String getSex() {r…

matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

数字图像处理期末复习2018-12-21愉快先生0.204字数 5547 阅读 18342018-12-22 19:35(数字图像冈萨雷斯第二版教材)一、基本原理图像的读取、存储操作:i imread(filename) ; imwrite(i,’image.jpg’); 图像显示的⽅法及区别:imshow(i); imshow(i,[]);%0…

大话oraclerac集群、高可用性、备份与恢复_Oracle RAC结构

Oracle RAC结构Oracle真正集群的出现是在Oracle公司收购Rdb并吸收了相关技术优势后,才正在推出了属于自己的RAC集群解决方案。RAC​和集群分类章节提到的集群系统有很多相似之处,从下图我们大概了解一下RAC集群的层次结构和所需的软硬件环境。Oracle Rac…

java obix_obix协议在java中的配置和使用详解

前言本文主要给大家介绍的是关于obix协议在java中的配置和使用,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。什么是 oBIX?简单来讲,obix是一种 XML 通讯协议,使用Http Request/Post方式进行数据通…

java7和java8切换_仍不切换到Java 8的6个理由

java7和java8切换Java 8很棒。 期。 但是……在我们有机会玩耍并玩弄它之后,就该退出了,避免吃盐。 所有的好东西都是有代价的,在这篇文章中,我将分享Java 8的主要痛点。请确保在升级和释放7之前您已经意识到了这些痛点。 1.并行…

python求阶乘之和_python计算阶乘前n项和

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 知道公式后就很简单了,利用for循环,第几行i1就等于几,当然python中是没有…

您需要了解的有关UI测试的所有信息

让我们从一个问题开始。 用户在网站上进行互动的第一件事是什么? 接口,当然。 网站的外观是在用户身上产生“第一印象”的第一件事。 交互式Web应用程序可以为用户带来成败,这就是为什么越来越多的人选择对其Web应用程序进行UI测试的原因。 …

python合并word单元格_python之DataFrame实现excel合并单元格_python

这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要…

java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据

展开全部服务器端源码:import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.Se…

pooled-jms_Hibernate隐藏的宝石:pooled-lo优化器

pooled-jms介绍 在这篇文章中,我们将揭示一个序列标识符生成器,​​它结合了标识符分配效率和与其他外部系统的互操作性(同时访问底层数据库系统)。 传统上,有两种序列标识符策略可供选择。 序列标识符,对…

apache geode项目结构_Apache Flink-基于Java项目模板创建Flink应用(流计算和批计算)...

Apache Flink创建模板项目有2种方式:1. 通过Maven archetype命令创建;2. 通过Flink 提供的Quickstart shell脚本创建;关于Apache Flink的环境搭建,请参考相关链接:Apache Flink快速入门-基本架构、核心概念和运行流程A…

matlabif语句怎么用_公益心 码客行(2)—— 简单语句

回顾与反思&#xff1a;cout语句的用法关于第一课的思考与实践问题&#xff0c;有答案了吗——请写出这个程序的输出结果。#include using namespace std;int main(){cout<<1<cout<<12<return 0;}提示&#xff1a;输出结果如下。13即&#xff1a;输出项为数值…

java 多线程 聊天_Java做一个多线程类似于QQ的聊天程序。

展开全部//时间关系,粗略的做了一下,一个模拟UDP协议的测试,图标,IP,以及端口都可以设成//发送者端的电脑参数32313133353236313431303231363533e78988e69d8331333366306533!import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.e…

组织机构代码输入测试用例_测试代码以用于过大的输入

组织机构代码输入测试用例在编写单元测试时&#xff0c;我们主要关注业务的正确性。 我们将竭尽所能&#xff0c;开开心心地走在最前沿。 我们有时会进行微基准测试并衡量吞吐量。 但是经常遗漏的一个方面是当输入过大时我们的代码如何表现&#xff1f; 我们测试了如何处理正常…

巴特沃斯滤波器python_如何用Scipy.signal.bu实现带通巴特沃斯滤波器

您可以跳过button的使用&#xff0c;而只需为过滤器选择一个顺序&#xff0c;看看它是否符合您的过滤条件。要生成带通滤波器的滤波器系数&#xff0c;请将滤波器阶数、截止频率Wn[low, high]&#xff08;表示为奈奎斯特频率的分数&#xff0c;即采样频率的一半&#xff09;和频…

java gnu_GNU/Linux下Java开发环境的安装和配置 | 学步园

首先下载JDK&#xff0c;在http://www.oracle.com/technetwork/java/javase/downloads/index.html下载最新版本的JDK&#xff0c;选择平台为linux&#xff0c;就会得到一个二进制文件&#xff0c;我得到的是jdk-6u23-linux-i586.bin&#xff0c;复制到需要安装的地方运行就会自…

css初始化_利用CSS变量实现炫酷的悬浮效果

这个动画是将鼠标移动到订阅按钮上移动光标会显示相应的彩色渐变。这个想法很简单&#xff0c;但是它能使这个按钮脱颖而出&#xff0c;人们一下子就注意到它了&#xff0c;增加了点击的概率。怎样才能达到这个效果&#xff0c;使我们的网站脱颖而出呢&#xff1f;其实&#xf…

glass fish_Glass Fish 4.0.1中的Jersey SSE功能

glass fishGlass Fish为各种Java EE规范捆绑了不同的参考实现&#xff0c;例如&#xff0c;CDI的Weld&#xff0c;JSF的Mojarra&#xff0c;WebSocket的Tyrus&#xff0c;JAX-RS的Jersey。 Glass Fish 4.0.1即将发布&#xff0c;并计划涵盖许多组件/模块的更新&#xff0c;这些…

css清除浮动的几种方法_web前端学习路线分享CSS浮动-清除浮动篇

web前端学习路线分享CSS浮动-清除浮动篇&#xff0c;为什么要清除浮动这里所说的清除浮动&#xff0c;并不是不要浮动了&#xff0c;而是清除浮动与浮动之间的影响。那么到底会有什么影响呢&#xff1f;1&#xff0e;高度塌陷举个例子我们看一下。我们在这里设置了div0是外容器…