播客基础2014.818推-c讲义_第1页
播客基础2014.818推-c讲义_第2页
播客基础2014.818推-c讲义_第3页
播客基础2014.818推-c讲义_第4页
播客基础2014.818推-c讲义_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目第一个C语言 O INCLUDE头文件包 MAIN函 注 ..........................................................................................................................10C语言自定义名字的要 RETURN语 C语言的编 编译过 GCC编译选 PRINTF执行原 CPU32位64位简 C语言中的数据类 常 字符串常 位,字节, 二进 十进 八进 十六进 字 SIZEOF关键 INT类 int常量,变 printf输出int printf输出八进制和十六进 short,long,longlong,unsigned 整数溢 CHAR类 char常量,变 printf输出 不可打印char转义 char和unsigned 浮点FLOAT,DOUBLE,LONGDOUBLE类 浮点常量,变 printf输出浮点 类型限 字符串格式化输出和输 字符串在计算机的方 PRINTF函数,PUTCHAR函 SCANF函数与GETCHAR函 运算符表达式和语 基本运算 逗号运算 运算符优先 复合语 类型转 条件分支语 关系运算 关系运算符优先 逻辑运算 IF IFELSE SWITCH与 条件运算符 GOTO语句与标 循环语 DO 循环嵌 整数在计算机的方 原 反 补 数 数组在内存的方 一维数组初始 二维数组初始 字符串与字符数 字符数组定 字符数组初始 字符数组使 随机数产生函数RAND与 用SCANF输入字符 字符串的结束标 字符串处理函 fgets函 puts函 fputs函 strcpy字符串拷 strncpy字符串有限拷 strchr查找字 strstr查找子 strtok分割字符 atoi转化为 atof转化为 atol转化为 函 函数的原型和调 函数的形参与实 MAIN函数与EXIT函 函数的递 递归的过程分 递归的优 递归的缺 头文件的使 #include与#define的意 #ifndef与 函数的二进制封 exe加载dll的说 linux编写so文件的方 linux使用 配置profile文件可以在当 下查找so文 作业描 指 指 指针的概 指针变量的定 &取地址运算 无类型指 指针的兼容 指针与数组的关 指针数 数组指 const关键字保护数组内 指向函数的指 指针运 指针小 字符指针与字符 指针和字符 通过指针字符串数 函数的参数为CHAR 指针数组做为MAIN函数的形 第一个c语言 oinclude头文件包<main函这个就是C语言程序的,所有的C程序都是从main开始执行,一个C的源程序必须mainmain函数注{}括号和代码C语言自定义名字的要return语Creturnmainreturn,代表整C编译过gcc编译选如果include包含的头文件在系统 下那么就用#include<>,如果包含的文件在当前目录下,那么用#inlclude“”-S-cprintf执行原CPU3264位简8 16 ALAH32 64C常位,字节,位1012这个数的2几次幂1010910078168bitsizeof关键由于sizeof返回的是一个大于等于0的整数,所以如果用int来表示sizeof的返回值就不合适,size_t一般就是一个无符号的整数.int类inta10;//4高地址放,底地址放低位---小端对齐高地址放低位,底地址放—大端对对于大型unixCPUprintfintinta0x100;//printfshort,long,longlong,unsignedshort2longlong8个字节64位操作系统下int,4个字节long648unsignedint//无符号整数unsignedlong//无符号的长整数unsignedshort//无符号短整数intI=shorta=char类charffunsignedcharprintfchar\b\n\r\t\\\”\?charunsignedunsignedchar0-float,double,longdouble类floatf=doublef1=printf类型限告诉编译器不要自作聪明的给我优化代码,把变量优化的寄存器里面计算,只要字符串在计算机的方char空间,以’\0’结尾0char的内存printf函数,putchar函字含dShortUnsignedshortounsigned无符号8uunsigned无符号10进制整x/unsigned无符号16进制整数,x对应的是对应的是ffloat或e/c字符型。可以把输入的数字按照ASCII码相应s/char*/wchar_tpvoid16进制形式输出指%%printf字含l附加在d,u,x,o前面,表示长整-0将输出的前面补上0 n位不够以空格填充scanf函数与getchar函.25.1.3*/%5.1.7inta=10;a=a+a5.1.8-a=a–5;a-=a=a*5;a*=.125.1.13-intI=6+5,3+1,--(,{}(,2-(-!(type(3*,/,45<<6<><=7==8&9^|?复合语类型转doubled=intad;//隐式转inta1=3;inta2=doublemiddouble)a1double)a2;//显示的强转printf("mid=%f\n",mid);C00代表真..46.1.5一个=C语言里面是赋值的,不是比较的,但是很多初学者爱犯一个严重的错误,就6.1.6关系运算符优先!ififelseifelseifelse是和最近的一条if语句配对switch条件运算符intinti=-intintx=(i<0)?-i:?goto语句与标dowhile条件dowhile循环嵌整数在计算机的方原,-7-0反补7和-7相加,还需要判断符号位。负数:最为1,其余各位原码取反,最后对整个数+-7-7的补码:=17的补码和-6的补码相加:0000011111111010-7+6=--76的补码相加:1111100100000110内存连续,并且是同一种数据类型的变量,C0开始的,到n-[数组元素的个数数组在内存的方intarray[10]{0};//0intarray[10]={0,1,2,3,4,5,6,7,8,9}测量地 测量木星距离的说intarray[3][4];//12个元素的intinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}字符数组定charcharbuf[]=“o字符数组使rand#include#includeintt=(int)ti for(inti=0;i<10;{printf("%d\n",}scanfcharbuf[100]={0};scanf(“%s”,buf);scanf("请输入i的值%d字符串的结束标fgetsgets函数查预留缓冲区是否能够容纳用户实际输入的数据多出来的字符会导致内存溢出,fgets由于fgets函数是为文件设计的,所以键盘时没有gets那么方chars[100]={0};fgets(s,chars[100]={0};fgets(s,sizeof(s),stdin);putschars[]=chars[]=ofputschars[]=chars[]=ofputs(s,charcharstr1[100];charstrcat(str1,str2);//str2追加到str1str1一定要有足够的空间来放str2,不然会内存溢出strncat(str1,str2,sizeof(str1)–strlen(str1)-“strcpystrncpystrchrstrstrstrtok字符在第一次调用时strtok()s字符串,往后的调用则将参数scharcharbuf[]="abc@defg@igk";char*p=strtok(buf,"@");;while(p){printf("%s\n",p=strtok(NULL,}atoiatofatol函数的原型和调在使用函数前必须定义或者函doubledoublecircle(doubler);intmain(){doublelength=circle(10);printf("length=%f\n",length);return0;}doublecircle(double{return2*3.14*}函数的形参与实C语言中,实参与形参的数据传递是“值传递returnvoidmain函数exit函mainreturnreturn代表子voidrecurse(intvoidrecurse(int{if(i>{recurse(i-}printf("i=%d\n",}int{return0;}voidvoid {printf("in%d,location%p\n",n,if(n<if(n<up_down((n+printf("out%d,location%p\n",n,}int{return0;}有n个人排成一队,问第n个人多少岁,他回答比前面一个2岁,再问前面一个人多少岁,他回答比前面一个2岁,一直问到最后问第一个人,他回答10岁intintage(int{intif(n==1)i=10;i=age(n-1)+2;returni;}2342*102+3*101次方+4*100次方。10。number%2得到二进制形式的最后一位,如果要将一个完整的整数转化为二number2的值,然后在递归调用语句之后进行输出,这样计算为了得出下一个数,需要把原数除以1。voidvoidto_binary(unsignedint{unsignedinti=n%2;if(n>=2)to_binary(n/2);printf("%c",i+0x30);}0,1,1,2,3,5,8,13,21,34,55,89,144,intintfib(int{if(n==0)returnif(n==1)returnifif(n>returnfib(n-1)+fib(n-}4132针,每次只允许移动一个盘11针上n-132voidvoidhanoi(intn,intone,inttwo,int{if(n==printf("%d->%d\n",one,three);{hanoi(n-1,one,three,two);printf("%d->%d\n",hanoi(n-1,one,three,two);printf("%d->%d\n",one,three);hanoi(n-1,two,one,three);}}main函数放在第一个文件中,而把自定义函数放在第二个文件中,那么就需要在#include与#define#ifndef与函数的二进制封exedlllinuxso1gcc编译的时候要加-fPIC选项,-fPIC是告诉gcc2gcc的时候要加-shared选项,意思是生成一个so共享库linuxgcc的时候需要加-L.代表从当前 下找相关的so文件,-l文件名(但不包括文件名开头的lib和扩展名so) gcc–omain.out–L.–la配置profile文件可以在当 下查找so文linux不在当前 下找so库文件1vi.bash_profileexportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:.5.作业描intsum1(intn);//n=10 intsum2(intn);//n=10 0到n范围内所有素数的和指int*p;//int*p=NULL的指针,我们称之为空指针,意味着这个指针不指向任何一个变量。void*转化为其他类型指针,也可以用(void*)将其他类型指针强制转化为void类型指针。void*intint*p=C语言当中数组的名称代表数组的首地址,如果取数组名称的地址,C语言认为就是取p1代表&a[1],p[1]a[5]p+5代表&a[5]intint指向指针的指针(二级指针inti=10;int*p1=&i;int**p2=&p1;printf("%d\n",**p2);intfunc(intintfunc(intconst如果讲一个数组做为函数的形参传递,那么数组内容可以在被调用函数修改,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论