
c-c++
Claroja
这个作者很懒,什么都没留下…
展开
-
clang 编译过程
1.预处理:gcc -E hello.c -o hello.i2.编 译:gcc -S hello.i -o hello.s3.汇 编:gcc -c hello.s -o hello.o4.链 接:gcc hello.o -o hello_elf原创 2019-03-24 22:05:18 · 2944 阅读 · 0 评论 -
clang VS
原创 2019-03-24 21:56:58 · 715 阅读 · 0 评论 -
c语言 const
static const int k=3; k是一个静态存储类型的整型常量.const限定了k的类型,我们可以对k进行初始化,但以后不能对k赋值,增量或减量.const限定的变量与符号常量是不等价的,不可以描述数组的大小 不能把由const限定的变量的地址赋值给非限定的指针....原创 2018-03-09 14:08:38 · 577 阅读 · 0 评论 -
c语言 存储类型
c中的每一个变量和函数都有两个属性:类型(type)和存储类型(storage class).存储类型分别是auto(自动),extern(外部),register(寄存器),static(静态) 1.auto 在函数体中定义的变量缺省是auto. 当进入代码块(block)时,系统为自动变量分配内存.在块内,这些变量被定义,并被认为他们是局部于本块的.当退出块时,系统释放分配给自动变量的内...原创 2018-03-09 14:02:41 · 13995 阅读 · 0 评论 -
c语言 字符处理
char类型,占用给一个字节,8个二进制位,可以存储256(2的8次方)个值 可打印字符包括:小写字母,大写字母,数字,标点和特殊字符(+,*),以及间隔字符(空格,换行) 非打印字符包括:换行符,响铃等在C中,一个字符有一个对应于ASCII编码的整数值.注意表示数字的字符常量的值和内在的整数之间没有什么特殊关系,也就是说’7’的值不是7.一些非打印和难以打印的字符需要转义序列(e...原创 2018-03-09 11:55:18 · 1353 阅读 · 0 评论 -
C语言 多文件程序
在一个单独的目录中编写一个大型程序,行程一个.h和.c文件集,每个.c文件含有一个或多个函数定义.按需要重新编译每个.c文件,这样可节省时间.假设我们正在开发一个pgm的大程序,在每一个.c文件的头部都含有一条 #include "pgm.h" 当处理器遇到这条命令时,它首先在当前的目录中寻找文件pgm.h.如果存在这个文件,就引入它;如果不存在,预处理器就在与机器相关的目录中寻找它;如果...原创 2018-03-09 11:13:43 · 11524 阅读 · 0 评论 -
C语言 控制语句
分类 运算符 描述 比较 < 小于 比较 > 大于 比较 <= 小于等于 比较 = 大于等于 比较 == 相等 比较 != 不等 逻辑 ! 非 逻辑 && 与 逻辑 || 或c语言中用...原创 2018-03-08 18:00:11 · 1570 阅读 · 0 评论 -
C语言 FileStreaming 键盘与屏幕IO
printf()用于显示格式化的输出.scanf()用于读取格式化输入.这些函数都在标准库中.可以向他们传递能被看做是控制串和其他参数的参数列表.控制串是一个包含一些转换说明的串或者格式.转换说明用%开始,并且用一个转换字符结束.例如,在%d中,字母d是一个转换字符. 转换字符 描述 c 字符 d 十进制数字 e 科学计数法浮点数 f...原创 2018-03-08 17:32:17 · 624 阅读 · 0 评论 -
C语言 编译
在调用C编译器时,预处理器先工作。在进行编译前,预处理器修改传递给编译器的源代码。例如,可能要引入的文件。程序中向预处理器发命令的行被称为预处理行,这样的命令用磅字符#开始. include <filename> #include <stdion.h> 预处理器仅在标准的位置寻找文件.在UNIX系统中,向stdio.h,math.h,string.h和stdlib.h...原创 2018-03-08 17:11:52 · 516 阅读 · 0 评论 -
clang mingw
下载在线安装软件https://sourceforge.net/projects/mingw-w64/files/mingw-w64/1.Version制定版本号,从4.9.1-8.1.0,按需选择2.Architecture跟操作系统有关,64位系统选择x86_64,32位系统选择i686;3.Threads设置线程标准可选posix或win32;两种操作系统,符合 posix 协议...原创 2019-03-24 21:57:54 · 1267 阅读 · 0 评论 -
clang 反汇编
原程序文件#include <stdio.h>int main(void){ int a; int b; int c; a = 10; b = 20; c = a + b; printf("%d\n", c); getchar(); return 0;}使用反汇编观察#include <stdio.h>int main(void){0...原创 2019-03-24 21:58:29 · 2525 阅读 · 0 评论 -
C语言 关键字
关键字描述char字符型shortintlongfloatdoubleenum枚举结构struct结构类型unionvoid空类型sizeof测试类型大小signed有符号的,默认unsigned无符号的const常量ifelseswitchc...原创 2019-03-24 22:04:44 · 784 阅读 · 0 评论 -
C语言 字符串
字符数组打印在printf时,遇到\0会停止打印字符串常量""在输入数组时会自动在末尾加入’\0’也就是说,字符串常量在内存的长度是多一个字节的#include <stdio.h>#include <stdlib.h>int main(void){ char arr[10] = { 'h','e','l','l','o' }; //%s遇到'\0'就会停止...原创 2019-03-24 22:03:44 · 2329 阅读 · 0 评论 -
C语言 类型转换
隐式转换(自动转换)遵循一定的规则,由编译系统自动完成#include <stdio.h>int main(){ int num = 5; printf("s1=%d\n", num / 2); printf("s2=%lf\n", num / 2.0); return 0;}强制类型转换把表达式的运算结果强制转换成所需的数据类型。(类型说明符) (表达式)...原创 2019-03-24 22:03:12 · 915 阅读 · 0 评论 -
C语言 变量和常量
#include <stdio.h>#define PI 3.1415926int main(void){ int a = 10; const int b = 10; float c = PI; printf("%d\n", a); printf("%d\n", b); printf("%f\n", c); getchar(); return 0;}1.通过...原创 2019-03-24 22:02:36 · 944 阅读 · 0 评论 -
C语言 浮点型
浮点型NameDescriptionSize*Range*signed:floatFloating point number.(浮点型)4bytes+/- 3.4e +/- 38 (~7 digits)doubleDouble precision floating point number.(双精度浮点型)8bytes+/- 1.7e +/- 308 (...原创 2019-03-24 22:01:54 · 5878 阅读 · 0 评论 -
C语言 字符类型
字符在给字符型变量赋值时,需要用一对英文半角格式的单引号(’ ')把字符括起来。NameDescriptionSize*Range*signed:wchar_tWide character.2 or 4 bytes1 wide character字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中。...原创 2019-03-24 22:01:20 · 5167 阅读 · 0 评论 -
C语言 整形
整形NameDescriptionSize*Range*signed:Range*unsigned:shortShort Integer.2bytes-32768 to 327670 to 65535intInteger.4bytes-2147483648 to 21474836470 to 4294967295longLong integ...原创 2019-03-24 22:00:42 · 2301 阅读 · 0 评论 -
C语言 格式化输出
将小的数值类型转换为大的数值类型,可以但是将大的数值类型转换为小的数值类型则会失去高位原创 2019-03-24 21:59:51 · 1335 阅读 · 0 评论 -
c语言 原码反码和补码
计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。原码一个数的原码(原始的二进制码)有如下特点:1.最高位做为符号位,0表示正,为1表示负2.其它数值部分就是数值本身绝对值的二进制数3.负数的原码是在其绝对值的基础上,最高位变为11的原码:0000 0000 0000 0000 0000 0000 0000 0001-1的原码:1000 0000 0000 ...原创 2019-03-24 21:58:59 · 2547 阅读 · 0 评论 -
C语言 gcc API
参数 说明 -fPIC 产生使用相对位置的代码(position-independent code),生成动态链接 –shared 生成共享库(需要指定fPIC参数) -o (output) 指定输出的位置 -x (language)指定要编译的语言类型,c,c++等,如果不指定会通过后缀识别 -std= 选择语言标准c90,c98原创 2018-02-07 15:31:02 · 755 阅读 · 0 评论 -
C语言 ld
GNU Linker 将对象和文件链接起来,从新定位他们的数据关系. 参数 说明 -o 输出文件原创 2018-02-07 15:39:11 · 1338 阅读 · 0 评论 -
scrapy
include include原创 2017-09-04 11:27:13 · 424 阅读 · 0 评论 -
C语言 malloc&free
# include <stdio.h>//引用函数库# include <stdlib.h>void main(){ while(1){ int *p = (int *)malloc(1024*1024*12);//malloc返回的是内存地址和空间,但不是指针,所以要用(int *)强转 free(p);//释放指针 getchar();原创 2017-09-06 13:28:08 · 872 阅读 · 0 评论 -
C语言 函数递归
所有的循环都可以写成递归,但递归不一定能写成循环# include <stdio.h>//引用函数库//递归实现累加int add_r(int num){ if (num == 0){ return 0; } else{ return add_r(num-1) + num; }}//循环实现累加int add_l(int nu原创 2017-08-24 11:51:26 · 1210 阅读 · 0 评论 -
C语言 函数
结构化编程标准 1)程序控制流尽可能简单 2)应该自顶向下地设计程序结构自顶向下设计(top-down design),也称逐步细化(stepwise refinement),把一个问题分解为几个小问题的组成.函数调用 程序的执行总是从main()开始.当程序控制遇到一个后跟有括号的函数名时,就调用或请求(call或invoke)函数.C语言函数语法type function...原创 2017-08-24 09:34:37 · 1481 阅读 · 0 评论 -
C语言 指针与结构体
结构体指针# include <stdio.h>//引用函数库# include <stdlib.h>struct info{ char name[4]; int age;};void main(){ struct info student1; student1.age = 19; sprintf(student1.name,"li"); pr原创 2017-09-13 11:15:17 · 1396 阅读 · 0 评论 -
C语言 运算符
算术运算符 名称 符号 说明 加 + 减 - 乘 * 除 / 取模 % 当整除时值为0关系运算符 名称 符号 说明 大于 > 大于等于 >= 小于 < 小于等于 <= 相等 == 不等 != 逻辑运算符 名称 符号原创 2017-08-23 13:31:15 · 1171 阅读 · 0 评论 -
c语言 函数返回值
# include <stdio.h>//引用函数库# include <stdlib.h>int a=1;int * point(){//定义返回类型为指针 return &a;}void main(){ printf("%x\n%d",point(),*(point()));}6010381原创 2017-09-04 11:04:33 · 1347 阅读 · 1 评论 -
C语言 指针与函数
# include <stdio.h>//引用函数库# include <stdlib.h>int add(int a, int b){ return a+b;}void main(){ printf("%x\n",add);//打印add函数的地址 int (*p)(int a,int b)=add;//建立函数指针 printf("%d",p(1,2));原创 2017-09-04 10:53:49 · 687 阅读 · 0 评论 -
C语言 数组参数
一维数组做为参数 数组作为函数参数,传递的是地址,函数的参数是数组,不会在内存中再产生局部变量。# include <stdio.h>//引用函数库# include <stdlib.h>void show1(int a[9]){ printf("%d\n",sizeof(a));//这里为什么是8,而不是4,地址的大小不应该是4个字节吗 printf("%x\n",a);原创 2017-09-04 10:29:05 · 2681 阅读 · 0 评论 -
C语言 共用体
几个不同各类型的变量共占一段内存,他们是重叠的关系# include <stdio.h>//引用函数库# include <stdlib.h>union info{ char name[9]; double age;};void main(){ //共用体大小必须大于最大成员类型,且一定是最小类型的整数倍 printf("%d\n",sizeof(union原创 2017-09-14 10:49:12 · 1509 阅读 · 0 评论 -
结构体对齐
结构体变量大小能被其最宽基本类型成员变量整除结构体每个成员变量相对于结构体首地址的偏移量(offset)都是最宽成员变量的整数倍结构体整体大小内被最宽基本类型成员大小整除# include <stdio.h>//引用函数库# include <stdlib.h>struct info{ char c;//因为int缘故自动补全为4个字节 int sh;//4个字节原创 2017-09-14 11:25:48 · 427 阅读 · 0 评论 -
C语言
c hello worldC语言数据类型 C语言运算符 C语言 函数 C语言 函数递归 C语言 数组 C语言 指针 指针的运算 数组作为函数参数 函数指针 返回值为指针的函数 void指针与NULL指针 动态分配内存 C/C++字符串 结构体 结构体数组 结构体指针 共用体 枚举c语言 内存四区 c语言 预处理k c语言 print...原创 2019-03-28 11:39:01 · 13622 阅读 · 10 评论 -
c hello world
#include<stdio.h>int main(void){ printf("hello world\n");//这个函数就是在`stdio.h`里面 return 0;//零意味着程序已经成功结束,非零值用于告诉程序没有成功 } #include<stdio.h>以#号开始的行被称为预处理指令(preprocessing directive)...原创 2018-02-09 13:26:09 · 967 阅读 · 0 评论 -
结构体数组
定义结构体数组# include <stdio.h>//引用函数库# include <stdlib.h>struct info{ char name[20]; int age;}student2[10];//定义结构体数组的第一种方式void main(){ struct info student1[10];//定义结构体数组的第二种方式}初始化结构体struct原创 2017-09-12 10:41:37 · 1116 阅读 · 0 评论 -
C语言 结构体
结构体变量定义在main之外定义# include <stdio.h>//引用函数库# include <stdlib.h>struct info{ char name[20]; int age;};struct info info1;void main(){ info1.age=19; sprintf(info1.name,"xiaowang");//(s原创 2017-09-11 16:02:51 · 1534 阅读 · 0 评论 -
C语言 枚举类型
枚举定义enum 枚举名{ 枚举值表 }; 当然枚举和结构体有同样的命名方式命名一个元素有限集,其中的元素称为枚举元(enumerator).# include <stdio.h>//引用函数库# include <stdlib.h>enum info{a=5,b=4,c=3,d=2,e=1 };void main(){ enum info ...原创 2017-09-27 14:09:54 · 1263 阅读 · 0 评论 -
C语言 指针运算
赋值运算 p=&a; //将变量地址赋值给指针 p=array; //将数组地址赋值给指针 p=&array[i]; //将数组元素赋值给指针 p1=p2; // 将指针地址赋值给指针# include <stdio.h>//引用函数库void main(){ int a = 10;//变量赋值,此时a变量的地址是&a int *p1 = &a;//将a变量的地址赋值给p1原创 2017-08-31 13:52:50 · 1345 阅读 · 2 评论 -
C语言 指针
计算机中最小的存储单元是1B(1字节),8bit(8位的2进制数据) 32位计算机,内存的存储量是232=4GB232=4GB2^32=4GB,所以8G的内存条的并不能充分的利用。 地址格式 %x十六进制,不打印0 %p显示地址的位数 “&”是取地址运算,&num就是取num变量的地址 “*”是指针运算符,*(&num)返回的是该地址对应的值 *和&是...原创 2017-08-28 15:32:26 · 1842 阅读 · 2 评论