1 数组

1.1 概念

  数组是指某种数据类型,在内存上按照顺序存储。中括号([ ])是数组的标识,中括号内的数值标识该种数据类型变量的个数,中括号也有取值的作用。

1.2 数组使用

  int a[10]={1,2,3,4,5,6,7,8,9,0};  --数组的定义
  int *p=&a[1];  --a[1],是取数组a在内存1位置的值,&a[1],是取a[1]的地址

  则p[6]等于8  --p[6],是以&a[1]为起始位置,向上取第六位置的值。

1.3 整数数组清零

1.3.1 bzero()

  只能清零。  

1.3.2 memset()

  可以设定为指定的值。但是,只会置每个字节的低位为指定值。例如:  

  int a[5] = {1,2,3,4,5};
  memset(a,2,sizeof(a));
  for(int i=0; i<5; i++){
    printf("%d", a[i]);  --打印的值为:10000000100000001000000010
  }

2 存储类关键字

2.1 auto

  只用于具有代码块作用域的变量声明中,修饰局部变量。

2.2 register

  只能是局部变量,并且是CPU可以接受的类型,不能取址。可以大大提高运算效率。

2.3 static

  (1)static修饰全局变量,只初始化一次,防止在其它文件也被使用。

  (2)static修饰局部变量,函数执行完,static变量不会释放。

  (3)static修饰函数,该函数只能在本文件使用。

2.4 extern

  声明某变量或者函数可外部调用。

2.5 const

3 有符号整形和无符号整形的运算

int main(void)
 {
   unsigned int a = 6;
   int b = -20;
   char c;
   (a+b>6)?(c=1):(c=0);

   return 0;
 }则c=1,但a+b=-14;如果a为int类型则c=0。

   原来有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数),
 比如上面 (a+b)>6这个比较运算,a+b=-14,-14的补码为1111111111110010。此数进行比较运算时,被当成了无符号数,它远远大于6,所以得到上述结果。
 

4 原码、反码、补码

  因为有符号的原码的真实值不准确,所以出现反码;因为-0这个特殊的值,所以出现的补码。所以,处理器计算的是补码。

5 可重入函数和不可重入函数

  不可重入函数指的是该函数在被调用还没有结束以前,再次被调用可能会产生错误。可重入函数不存在这样的问题。

  不可重入函数在实现时候通常使用了全局的资源,在多线程的环境下,如果没有很好的处理数据保护和互斥访问,就会发生错误。
  常见的不可重入函数有:
    printf --------引用全局变量stdout
    malloc --------全局内存分配表
    free    --------全局内存分配表
  在unix里面通常都有加上_r后缀的同名可重入函数版本。如果实在没有,不妨在可预见的发生错误的地方尝试加上保护锁同步机制等等。

  

C语言特殊知识点解析的更多相关文章

  1. c语言相关知识点解析

    程序基本结构 常量变量标识符 数据类型 整型类型 浮点类型(实型) 基本类型转换 字符串 函数类型 枚举类型 enum 数组类型 结构体类型 共用体类型 字符串函数 运算符 流程控制语句 输入输出语句 ...

  2. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  3. 知名互联网公司校招 Java 开发岗面试知识点解析

    天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...

  4. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  5. Java 面试知识点解析(二)——高并发编程篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  9. JavaScript语言基础知识点图示(转)

    一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...

随机推荐

  1. easyui north 穿透

    穿透layout的north 原理 穿透下面的层只要使该层的position置于fix即可 如果该层还有下一级,则下一层级的position置于absolute即可 示例代码 #menu.active ...

  2. 采用jmeter测试dubbo服务接口

    http://www.kissyu.org/2017/02/08/jmeter%E6%B5%8B%E8%AF%95dubbo%E6%8E%A5%E5%8F%A3/

  3. 【c++】【转】c++中的explicit关键字

    http://www.cnblogs.com/chio/archive/2007/09/17/895263.html c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式(调用) ...

  4. Replica Sets+Sharding方案之真枪实弹篇

    话说在虚拟机中会报各种错误.在真实的环境中就不会那么痛苦了. 想了一下虚拟机中报错的原因有. 机器卡,处理的时间长就会抛出错误 还有虚拟机假设给的空间太小.也会报异常. 此处讲讲我的大致思路. 第一, ...

  5. QML与C++交互:登陆界面设计

    QML与C++交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前 ...

  6. 20160225.CCPP体系具体解释(0035天)

    程序片段(01):CircleList.h+CircleList.c+main.c 内容概要:环形链表 ///CircleList.h #pragma once #include <stdio. ...

  7. nginx-Proxy Cache缓存

      1.创建目录 mkdir /export/Data/nginx_proxy_cache mkdir /export/Data/nginx_proxy_temp   2.修改http,打开缓存 文件 ...

  8. OBIEE开发手冊

    Creating a Repository Using the Oracle BI 11g Administration Tool cid=5690&ssid=0">http: ...

  9. 解决ES集群状态异常教程(存在UNASSIGNED)

    解决ES集群状态异常教程(存在UNASSIGNED)_百度经验 https://jingyan.baidu.com/article/9158e00013f787a255122843.html

  10. 自定义Notification实现例子

    1.自定义view: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...