C
文章平均质量分 56
__pop_
这个作者很懒,什么都没留下…
展开
-
数据类型之void
void型void型是数据类型的一种void型的实质void型就是表示一个空类型,并不是表示没有,而是一个空类型空类型就是没有具体的类型void型的使用与指针结合使用定义变量 例如 void * p;例如 void * * p;定义函数返回值类型,参数类型 例如 void fun(void);void型的作用/* void*的独特作用 */int i = 10;//之所以先定义原创 2016-10-21 15:10:10 · 3683 阅读 · 0 评论 -
修饰符之volatile
作用: 避免被编译器优化说起优化,一般有两个层级.一个是程序员对代码的优化,影响源代码的输出.另一个是编译器对代码的优化,影响可执行文件的输出.下面说一下编译器对代码的优化对代码块的优化 不修饰,会减少语句,什么的 修饰了之后,不会对语句块优化对变量的优化 不修饰的话,第一次会从内存读取,之后会从寄存器中读取. 修饰后每次都必须从内存中读取.应用环境1. 硬件寄存器2. 中断服务程序原创 2016-10-20 11:19:00 · 455 阅读 · 0 评论 -
修饰符之extern
作用告诉编译器此变量/函数是在别处定义的,要在此处引用修饰全局变量修饰函数声明注意/*A文件,定义变量*/int a[9] = {0};int *p = "abcd";int i = 9;/*B文件,声明变量*/extern int a[];//切记不可用 extern int *a;extern int *p;extern int i;原创 2016-10-20 12:16:47 · 313 阅读 · 0 评论 -
常量之概览
常量常量在我看来就是某一地址上存储的不可变化的数值变量在我看来就是某一地址上存储的可以变化的数值(之所以提变量,是因为很多人分不清常量和变量)常量的分类整型例如 9 就是一个整型常量整型常量的表现形式 /*二进制*/0b11110000/*八进制*/035/*十进制*/38//以int 型存储38L//以unsinged long int 型存储38UL//以long int 型原创 2016-10-20 15:42:57 · 295 阅读 · 0 评论 -
变量之概览
变量变量在我看来就是某一地址上存储的可以变化的数值常量在我看来就是某一地址上存储的不可变化的数值(之所以提常量,是因为很多人分不清常量和变量)变量的分类变量分为基本数据类型(1-5)/void型(6)/构造数据类型(7-9)整型浮点型字符型指针型枚举型void型数组结构体共用体注意我们关注一个变量的时候会关注以下几点存储空间 参考”程序加载后的内存空间分布”与”各数据类型的存原创 2016-10-20 13:49:48 · 313 阅读 · 0 评论 -
修饰符之const
作用:修饰变量修饰前,该变量可以被改变修饰后,该变量不可以被直接改变,但可以被间接改变注意:如果变量被直接改变,编译报错;被间接改变,编译警告应用环境全局位置/函数体中,不需要改变的变量参数位置,不需要改变的变量注意:有些博客中说可以应用在返回值位置,效果是返回值不可被改变.请问返回值有返回的概念吗?有知道的可以评论我为什么让变量不可被轻易地改变这个变量的值不需要在某处改变,所以加co原创 2016-10-20 13:09:33 · 382 阅读 · 0 评论 -
函数之概览
函数函数是程序员编写的,用于实现功能的代码块.函数模板<数据类型> <函数名称> (<形式参数说明>){ [语句序列;] return [表达式];} //<数据类型>为返回值即[表达式]的类型//函数名称是一个标识符//形式参数说明是对变量的定义.可以为void,表示无参//(<函数参数说明>)后面必须有一对{},{}中的内容被称为函数体.//函数体中可以有语句序原创 2016-10-23 16:06:37 · 437 阅读 · 0 评论 -
链接过程解析
编译简介广义上的编译分为四个过程,分别是预处理gcc -E helloworld.c -o helloworld.i 编译gcc -S helloworld.i -o helloworld.s 汇编gcc -c helloworld.s -o helloworld.o 链接gcc helloworld.o -o helloworld 链接链接分为动态链接和静态链接 就一个库来...原创 2017-03-02 20:34:59 · 610 阅读 · 0 评论 -
基本数据类型的存储字节数
C标准之关于数据类型的字节数C标准中并没有具体给出规定那个基本类型应该是多少字节数字节数与机器、OS、编译器有关但规定了以下原则sizeof(short int) < sizeof(int)sizeof(int) < sizeof(long int)short int至少应为16位(2字节)long int至少应为32位(4字节) 编译器位数 数据类型 16位编译器 32位原创 2016-10-20 17:05:52 · 963 阅读 · 0 评论 -
数据类型之概览
数据类型数据类型是一系列的用于规定数据在内存中存储的法则.数据类型的分类数据类型分为基本数据类型(1-5)/void型(6)/构造数据类型(7-9)整型浮点型字符型指针型枚举型void型数组结构体共同体问题数据类型跟常量/变量有什么关系? 数据类型是常量和变量的一个模板数据类型不等于常量,也不等于变量常量和变量遵循数据类型数据类型跟数据结构有什么关系? 参考”数据类型原创 2016-10-20 16:28:10 · 384 阅读 · 0 评论 -
数据类型之指针
指针指针是基本数据类型的一种指针的实质指针不像其他数据类型一样有确定的类型.指针变量和指针常量有确定的类型.指针存储的是一个字节内存的地址.指针不是一个字节内存的地址指针包括地址和类型.地址像 0x0000ffff 就是内存中的一个地址类型int * 型int * * 型char * 型double * 型struct a * 型int ( * )[4]型int ( * )fun(vo......原创 2016-10-20 20:14:38 · 1524 阅读 · 0 评论 -
数据类型之数组
数组数组是构造数据类型的一种构造数据类型基本数据类型和void型中的一种或几种按照一定的规则放在一块,组成一个数据类型,就是一个构造数据类型规则分为以下几种多个相同的数据类型构成一个数据类型,这个数据类型就是数组多个不同的数据类型按照按照对齐的方式存储,构成一个数据类型,这个数据类型就是结构体多个不同的数据类型存储在同一个位置,构成一个数据类型,这个数据类型就是共用体数组的实质数组是一个原创 2016-10-21 15:49:00 · 680 阅读 · 0 评论 -
动态库和静态库
参考资料参考 gcc创建和使用静态库、动态库 参考 工程下载工程目录动态库的制作//创建库并链接库gcc hello.c -I../include -fPIC -shared -o libhello.sogcc main.c -I../include -L../lib -lhello -o main -Wl,-rpath=../lib/gcc ...原创 2017-01-01 14:50:40 · 642 阅读 · 0 评论 -
C程序的入口
/*test_main.c*/#include <stdlib.h>#include <stdio.h>int myentry(int argc, char *argv[]){ printf("Start from myentry\n"); exit(0);}gcc -nostartfiles -e myentry test_main.c...原创 2018-02-01 11:59:45 · 2540 阅读 · 0 评论 -
修饰符之static
作用修饰局部变量void fun(void){ int a; int b = 0; int c = 1; static int x; static int y = 0; static int z = 1; return ;}//a b c 在栈中 //注意,在这段代码被执行的时候会去读代码段,然后开始在栈中 定义变量,a b c.这段代码原创 2016-10-20 12:04:33 · 332 阅读 · 2 评论 -
编译时连接与运行时链接及静态库链接
编译时连接与运行时链接的参考路径//动态库编译时链接-L/lib /usr/lib /usr/local/lib编译时链接的话,能查到libname.so且这个文件要不是个link,要不就是实际的动态库文件,否则会报错说链接顺序没有意义,因为并不链接到文件里面去//动态库运行时链接1. 编译目标代码时指定的动态库搜索路径;-Wl,-rpath,2. 环境变量 LD_LIBRARY_原创 2017-03-01 22:34:10 · 4523 阅读 · 1 评论 -
预处理指令
预处理指令表现形式:除去空格,以#开头的代码行即可以是空格开头,然后是#即#号必须是该行除了任何空白字符外的第一个字符即#号是指令的标识,在预处理指令关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令作用:包含预处理指令的源代码供预处理器解析,处理,转换,生成新的代码给编译器处理.预处理指令将在编译器进行编译之前对源代码做某些转换。在C语言中,并没有任何内在的机原创 2016-12-03 14:59:36 · 709 阅读 · 0 评论 -
数据类型之共用体
共用体共用体是构造数据类型的一种共用体也常被称为联合体共用体的实质共用体是单个存储单位上的元素集合注意:元素都在一个存储单位上,这个存储单位的大小是最大数据类型的大小共用体的作用我们用共用体并不是内存空间不够用用共用体时,主要利用”元素都存储到一个存储单位上”这一特性共用体的组成共用体是依靠不同的数据类型的组合创建起来的,数组的元素可以是之下的任何几种的组合整型浮点型字符型指针型枚举型数原创 2016-10-22 12:37:03 · 1168 阅读 · 0 评论 -
数据类型之枚举
枚举枚举是基本数据类型的一种枚举类型/*下面的语句为枚举类型的宏声明,并不分配内存空间*/enum name{ a,//a只存在编译器中,是int型常量?或许在只读段? b, c};枚举成员枚举成员只存在编译器中,并不分配内存?枚举成员为int型常量只能在枚举类型声明(?定义)的时候初始化 为什么声明的时候分配了空间?难道说就只有枚举不一样?如果不初始化,第一个原创 2016-10-22 10:46:17 · 2176 阅读 · 0 评论 -
变量之问题
问题1. 整型存储与字符型存储的问题 /*32位机*/ 整型是以补码存储方式存储的 正整数 正数的补码和原码相同 例如 5 在内存中用 00000000 00000000 00000000 00000101表示 0 0的补码是0x00000000 ...原创 2016-10-22 19:54:47 · 630 阅读 · 0 评论 -
语句之概览
C语句语句是C文件中必不可少的一部分语句的概念硬要说语句的概念的话,可以说它是为了完成一个函数,也就是为了实现一个功能而所做的一系列操作中的最小单位语句的分类1. 表达式语句i++;2. 函数调用语句exit(0);3. return语句return;4. continue语句continue;5. break语句break;6. 复合语句{ //do something}7. 循环语句/...原创 2016-10-23 00:18:06 · 395 阅读 · 0 评论 -
数据类型之整型
整型整型为数据类型的一种整型的分类short 2个字节-(2^15) ~ (2^15 - 1)-32768 ~ 32767unsigned short 2个字节0 ~ (2^16 - 1)0 ~ 65535int 4个字节-(2^31) ~ (2^31 - 1)-2,147,483,648 ~ 2,147,483,647unsigned int 4个字节0 ~ (原创 2016-10-20 17:39:31 · 557 阅读 · 0 评论 -
表达式
表达式表达式是由常量/变量/运算符/函数调用组成的有意义的组合。表达式分类元素表达式元素表达式是我自己给的概念,只是为了方便记忆 /*无运算符*/ a PI 9算术表达式 /*算术运算符*/ +(加号) -(减号) * / % +(正) -(负) a+x x%y赋值表达式 /*赋值运算符*/ ...原创 2016-10-23 11:23:35 · 375 阅读 · 0 评论 -
数据类型之字符型
字符型字符型是数据类型的一种字符型- 取值范围: 0 ~ 127(常用的字符)字符型的存储字符实际上是以整数的形式存储在内存地址上的ASCII码表American Standard Code for Information InterchangeASCII码表是字符和数值对应的一个表ASCII码表中一共有256个字符(取值范围为0 ~ 255)1. 前128个是标准ASCII码表中的字符,键盘上原创 2016-10-20 19:31:52 · 5171 阅读 · 0 评论 -
运算符
运算符运算符是一种操作方法运算符列表及优先级 运算符 名称或含义 使用形式 结合性 说明 优先级 [] 数组下标 数组名[常量表达式] 左到右 1 () 圆括号 (表达式)/函数名(形参表) 左到右 1 . 成员选择(对象) 对象.成员名 左到右 1 -> 成员选择(指针) 对象指针->成原创 2016-10-23 14:42:21 · 542 阅读 · 0 评论 -
C语言概览
C学习c语言请不要一上来就了解c语言的架构,不然你会晕头的在你需要关注的范围内,一个c工程是由1个或多个.c文件和0个或多个.h文件构成的.(当然稍微复杂一点的工程还会有其他文件)但总的来说一个c工程绝不是仅仅由1个或多个.c文件和0个或多个.h文件构成的,还有其他的不需要你关心的.h文件和共享目标文件(linux环境下的称谓,windows环境中叫做动态链接库文件)和其他...原创 2016-10-23 17:27:05 · 856 阅读 · 0 评论 -
类型
类型一种值的集合(存储和逻辑的关系) + 定义在此种值的集合上的一组操作 = 类型一种数据结构(存储结构和逻辑结构) + 定义在此种数据结构上的一组操作 = 结构类型一种原子结构 + ...原创 2016-11-06 14:43:08 · 422 阅读 · 0 评论 -
数据类型之结构体
结构体结构体是构造数据类型的一种结构体的实质结构体是大体上连续的地址上的元素集合结构体中的元素的存储要考虑对齐结构体的作用在c语言中,结构体是一种非常重要的数据类型。封装多个不同类型的元素,作为交互的一个接口交互这块,结构体变量可以作为数据结构中的一个节点,可以作为网络通信中发送的消息的封装,可以作为内核中文件属性的封装,可以作为驱动中对设备文件操作的封装.也就是说,驱动,内核,应用方面都应用原创 2016-10-22 11:18:37 · 1776 阅读 · 0 评论 -
数据类型之浮点型
浮点型浮点型是数据类型的一种浮点型的分类单精度浮点型 4个字节-2^128 ~ +2^128-3.40E+38 ~ +3.40E+38存储 1bit(符号位) 8bits(指数位)23bits(尾数位)双精度浮点型 8个字节-2^1024 ~ +2^1024-1.79E+308 ~ +1.79E+308存储 1bit(符号位)11bits(指数位)52bits(尾原创 2016-10-20 18:38:27 · 1088 阅读 · 0 评论 -
重定义概念
重定义是什么重定义就是定义了多次一般解决重定义的方法是用宏指令 ifndef endif .但是这个方法只能解决重复包含同一个文件的问题. 如果多个文件中对同一个符号进行了定义,也会出现重定义的问题为什么会出现定义多次的问题呢?回顾一下生成可执行二进制文件的过程1/预处理预处理阶段不可能出现重定义,不是说不可能出现,而是不可 能报错2/编译编...原创 2017-01-01 15:11:40 · 6276 阅读 · 0 评论 -
GCC预处理时头文件搜索路径
GCC预处理时头文件搜索路径//测试系统信息linux@ubuntu:~$ uname -a Linux ubuntu 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013 i686 i686 i386 GNU/Linuxlinux@ubuntu:~$ cat /proc/versionLi原创 2017-03-01 21:31:46 · 1075 阅读 · 0 评论 -
C语言 位域
#include <stdio.h>struct A{ char t:4; // -8 ~ 7 //半个字节,但是占一个字节,还可以存半个字节 unsigned char k:4; // 0 ~ 15 unsigned char n:3; // 0 ~ 7 unsigned short i:8; // 1个字节 //如果要对其的话,对其为8 unsigned long ...原创 2019-05-09 14:13:51 · 147 阅读 · 0 评论