热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pointersonc(day1,chapter1)

c语言的优先级优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)函数名(形参表).成员选择ÿ

c语言的优先级

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

 

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

双目运算符

6

大于

表达式>表达式

左到右

双目运算符

>&#61;

大于等于

表达式>&#61;表达式

双目运算符

小于

表达式<表达式

双目运算符

<&#61;

小于等于

表达式<&#61;表达式

双目运算符

7

&#61;&#61;

等于

表达式&#61;&#61;表达式

左到右

双目运算符

!&#61;

不等于

表达式!&#61; 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2:表达式3

右到左

三目运算符

14

&#61;

赋值运算符

变量&#61;表达式

右到左

 

/&#61;

除后赋值

变量/&#61;表达式

 

*&#61;

乘后赋值

变量*&#61;表达式

 

%&#61;

取模后赋值

变量%&#61;表达式

 

&#43;&#61;

加后赋值

变量&#43;&#61;表达式

 

-&#61;

减后赋值

变量-&#61;表达式

 

<<&#61;

左移后赋值

变量<<&#61;表达式

 

>>&#61;

右移后赋值

变量>>&#61;表达式

 

&&#61;

按位与后赋值

变量&&#61;表达式

 

^&#61;

按位异或后赋值

变量^&#61;表达式

 

|&#61;

按位或后赋值

变量|&#61;表达式

 

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

说明&#xff1a;

同一优先级的运算符&#xff0c;运算次序由结合方向所决定。

 

优先级口诀

 

括号成员第一&#xff1b;         括号运算符[]() 成员运算符.  ->

全体单目第二&#xff1b;         所有的单目运算符比如&#43;&#43; -- &#43;(正) -(负) 指针运算*&

乘除余三,加减四&#xff1b;      这个"余"是指取余运算即%

移位五&#xff0c;关系六&#xff1b;       移位运算符&#xff1a;<<>> &#xff0c;关系&#xff1a;> <>&#61; <&#61; 等

等于(与)不等排第七&#xff1b;   即&#61;&#61; !&#61;

位与异或和位或&#xff1b;       这几个都是位运算: 位与(&)异或(^)位或(|)

"三分天下"八九十&#xff1b; 

逻辑或跟与&#xff1b;           逻辑运算符:|| 和 &&

十二和十一&#xff1b;           注意顺序:优先级(||)  底于 优先级(&&)

条件高于赋值,          三目运算符优先级排到 13 位只比赋值运算符和","高

逗号运算级最低&#xff01;       逗号运算符优先级最低

 

scanf&#xff1a;

scanf()函数返回成功赋值的数据项数&#xff0c;读到文件末尾出错时则返回EOF。

1
int scanf(const char *format,...);
函数 scanf() 是从标准输入流stdio (标准输入设备&#xff0c;一般是键盘)中读内容的通用子程序&#xff0c;可以说明的格式读入多个字符&#xff0c;并保存在对应地址的变量中。[1] 
其调用形式为: scanf("<格式说明字符串>"&#xff0c;<变量地址>);变量地址要求有效&#xff0c;并且与格式说明的次序一致。
puts&#xff1a;
puts()函数用来向标准输出设备&#xff08;屏幕&#xff09;写字符串并换行&#xff0c;其调用方式为&#xff0c;puts(s)&#xff1b;其中s为字符串字符&#xff08;字符串数组名或字符串指针&#xff09;。
int puts(const char *string);
exit:
EXIT&#xff08;&#xff09;是C语言中的一个终止函数。
EXIT_FAILURE是C语言头文件库中定义的一个符号常量&#xff0c;在vc&#43;&#43;6.0下头文件stdlib.h中定义如下&#xff1a; #define EXIT_FAILURE 1 .
EXIT_FAILURE 可以作为exit()的参数来使用&#xff0c;表示没有成功地执行一个程序。
EXIT_SUCCESS 作为exit()的参数来使用&#xff0c;表示成功地执行一个程序。

C

语言中的

return, exit, break, continue

。前两个函数使用的同时通常都会带上程序退

出时的状态码&#xff0c;标准

C

中有

EXIT_SUCCESS

EXIT_FAILURE

两个宏&#xff0c;位于

/usr/include/stdlib.h

中。

 

是这样定义的的&#xff1a;

 

#define EXIT_FAILURE 1 

#define EXIT_SUCCESS 0

strncpy&#xff1a;

strncpy 是 C语言的库函数之一&#xff0c;来自 C语言标准库&#xff0c;定义于 string.h&#xff0c;char *strncpy(char *dest, char *src, int n)&#xff0c;把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中&#xff0c;并返回dest。

1&#xff09;src串长度<&#61;dest串长度,(这里的串长度包含串尾NULL字符)
如果n>src由于长度达到src NULL&#xff0c;正常复制&#xff0c;特别注意&#xff0c;如果src中有NULL&#xff0c;strncpy复制到NULL即使没到n也提前停止。如果n &#61; src串长度&#xff0c;与strcpy一致。注意n的选择当n > dest串长度&#xff0c;dest栈空间溢出产生崩溃异常。
2&#xff09;src串长度>dest串长度
如果n &#61;dest串长度&#xff0c;则dest串没有NULL字符&#xff0c;会导致输出会有乱码。如果不考虑src串复制完整性&#xff0c;可以将dest 最后一字符置为NULL。
综上&#xff0c;一般情况下&#xff0c;使用strncpy时&#xff0c;建议将n置为dest串长度&#xff08;除非你将多个src串都复制到dest数组&#xff0c;并且从dest尾部反向操作)&#xff0c;复制完毕后&#xff0c;为保险起见&#xff0c;将dest串最后一字符置NULL&#xff0c;避免发生在第2)种情况下的输出乱码问题。当然喽&#xff0c;无论是strcpy还是strncpy&#xff0c;保证dest串容量(能容纳下src串&#xff09;才是最重要的。
在c语言中&#xff0c;数组参数是以引用(reference)形式进行传递的&#xff0c;也就是传址调用&#xff0c;而标量和常量则是按值(value)传递的。
在c语言中&#xff0c;while循环的功能哈其它语言一样&#xff0c;它首先测试表达式的值&#xff0c;如果是假的(0)就跳过循环体。
%d,以十进制形式打印一个整型
%o,以八进制形式打印一个整型
%x,以十六进制形式打印一个整型
NUL是ASCII字符集中&#39;\0&#39;字符的名字&#xff0c;它的字节模式为全0.
NULL指一个其值为0的指针。他们都是整型值&#xff0c;其值也相同&#xff0c;所以它们可以互换使用。
puts函数是gets函数的输出版本&#xff0c;它把指定的字符串写入标准输出并在末尾添上一个换行符。
EOF是一个整型。
(ch &#61; getchar)!&#61;EOF && ch !&#61; &#39;\n&#39;
将ch声明成一个整型可以防止从输入读取的字符意外地被解释为EOF。同时&#xff0c;这也意味着接受字符的ch必须足够大&#xff0c;足以容纳EOF&#xff0c;这就是ch使用整型的原因。
rearrange(char *output, char const *input, int n_columns, int const columns[])
当数组名作为实参时&#xff0c;传给函数的实际上是一个指向数组起始位置的指针&#xff0c;也就是数组内存中的地址。
由于它的传址调用语义&#xff0c;如果函数修改了形参数组的元素&#xff0c;它实际将修改实参数组的对应元素。
作用有两个&#xff0c;其一&#xff0c;它申明该函数的作者的意图是这个参数不能被修改。
其次&#xff0c;它导致编译器去验证是否违背该意图。
putchar 函数&#xff0c;它与getchar函数相对应&#xff0c;它接受一个整型参数&#xff0c;并在标准输出中打印该字符(字符本质是整数)。
strcpy函数与strncpy函数类似&#xff0c;但它没有限制需要复制的字符数量。
它接受两个参数&#xff1a;第2个字符串参数将被复制到第1个字符串参数&#xff0c;第一个字符串原有的字符将被覆盖。
strcat函数也接受两个参数&#xff0c;但它把第2个字符串参数添加到第1个字符串参数的末尾。
在两个函数中&#xff0c;他们的第1个字符串参数不能是字符串常量。而且&#xff0c;确保目标字符串有足够的空间是程序员的责任&#xff0c;函数并不对其进行检查。
在字符串内进行搜索的函数是strchr&#xff0c;它接受两个参数&#xff0c;第1个参数是字符串&#xff0c;第2个参数是一个字符。这个函数在字符串参数内搜索字符参数第1次出现的位置&#xff0c;
如果搜索成功就返回指向这个位置的指针&#xff0c;如果搜索失败就返回一个NULL指针。strstr函数功能相似&#xff0c;但它的第2个参数也是一个字符串&#xff0c;它搜索第2个字符串在第1个字符串中第1次出现的位置。
编程提示的总结&#xff1a;
1、在使用下标前先检查它们的值。
2、始终要进行检查&#xff0c;确保数组不越界。

 

转:https://www.cnblogs.com/friday92/p/4837867.html



推荐阅读
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文详细介绍了定时器输入捕捉技术的原理及其应用。通过配置定时器通道的引脚模式为输入模式,并设置相应的捕获触发条件,可以实现对外部信号的精确捕捉。该技术在实时控制系统中具有广泛的应用,如电机控制、频率测量等场景。文中还提供了具体的配置步骤和示例代码,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Linux系统的Kickstart自动化服务器部署方案
    本文针对企业需求,提出了一种基于Linux系统的Kickstart自动化服务器部署方案。该方案旨在通过无盘批量安装操作系统,提高企业IT基础设施的部署效率。Kickstart是一种利用Anaconda工具实现服务器自动化安装的技术,能够显著简化和加速操作系统的安装过程。通过详细的实施规划,本文介绍了Kickstart的工作原理及其在实际部署中的应用,为企业提供了高效的自动化部署解决方案。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
author-avatar
夏乐迎1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有