一、黑马程序员————C语言总结

来源:互联网 发布:上海云计算大会董事长? 编辑:程序博客网 时间:2024/05/21 09:05

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

UNIX命令:pwd ls -l touch open ../ ./ cd
xcode3的编译器gcc
xcode4的编译器LLVM(clang)
安装命令行工具
编译代码:cc -c 文件名
链接器 命令 cc 文件名.o<二进制文件> (-o 重命名)
运行./a.out
编译加链接:cc xx.c
关键字 32个
标识符:只能用英文字母,数字下划线组成,且不能以数字开头
命名规范:驼峰标识 第二个单词首字母大写
%p输出地址 地址是从大到小分配的
两数交换<3种>
temp=a;a=b;b=temp;
a=b-a;b=b-a;a=b+a;
a=b^a;b=b^a;a=b^a;
scanf的用法
scanf("%d %d")可以是空格,回车,tab键
scanf("%d,%d")必须输入逗号
scanf("%d\n")有错。不能完成输入
int 4字节 char 1字节(不能存汉字) float<0.0f> 4 double 8

自动类型转换:整数除以整数还是整数
             3.0/2 =1.5000  double e = 3/2; e =1.0000
自增自减
int a = 10; b =++a + a++; b = 22; -> b = 10+12;
int a = 10; b =a++ + ++a; b = 22; -> b = 11+11;
<a++是把a的值放在那个位置,但a还是加1> 
10++;10 = 10+1是错误的,只能变量++
任何非0数都是真
关系运算符优先级:
== !=运算符低于 > < >= <=
2<3<5 优先级相同 从左向右运算
算数运算符优先级高于关系运算符 int b= 5!=4+5*3>2==10
&& || 只计算一边 !比算数运算符优先级高,&& ||最低
 !10>2 = !(10>2)
保证代码的可读性

if(a>b)
   int sum =a + b; 错误,因为定义变量的作用域不明确
如果在case if 后面定义变量,一定要用{}
for(int i=0;i<n;i++) 整个for循环中i都有效
返回值注意:就算定义了返回值类型,也可以不写返回值
test(){printf("haha");} 不写返回值类型,默认为int类型
c语言没有重载
函数不能重复定义,但可以重复声明。函数只有声明没有定义,编译不报错
include"abc.txt" 将abc中的代码copy到代码中 
<>用于系统库 ""用于自己写的库
printf()返回值是字符串的长度 1个汉字占3个字符
只定义不声明不报错,只警告。链接可以链接系统库文件

%p 输出地址
二进制 0b110 
八进制 0110  %o
十六进制 0x110 a:10 f:15 %x
二进制转十进制 1010 = 0*2的0次方+1*2的1次方+0*2的2次方
十进制转二进制
n位2进制位所能表示的最大值是2的n次方-1  0~3 0~7
long 8个字节 short 2个字节
long long =long long int 32位编译器long4字节 64位编译器long8字节 long long一直8字节
signed unsoghed(无符号%u) 最大值2的32次方-1 
位运算 异或 ^ 只要两位相异,就为1 a^0 =a a^b^a=b
>> 相当于乘以2的n次方,符号可能发生改变
<< 相当于除以2的n次方,
判断奇偶性, a&1==0奇数  a&1==0
char a = 65  char类型的整数只能是-128~127  a:97 A:65  'a'-'A'=32

int arr[] 这是错误的写法。 不知道分配多大内存
奇葩写法 int arr[5] = {[3]=2,[4]=3} 只要求看懂
int arr['A'] = arr[65]
int count = 5;int arr[count]={1,2,3,}也是错误的,只能是常量
但int arr[count]; arr[0]=1;arr[2]=2;是可以的。但无法完成初始化
数组的长度: sizeof(arr)/sizeof(int);
数组存储细节: 数组元素地址分配是从小到大的,与整数二进制是相反的
数组作为函数参数,可以省略元素个数
64位编译器下:test(int arr[]),sizeof(arr)永远等于8。
字符串 char str[8]="it" 等价于 char str[8] = {'i','t','\0'}; \0的ASCII码值是0。
\0的作用 :字符串结束的标记
strlen() 计算字符串长度,不包括\0,一直读到\0
指针只能存储地址 *p 访问指针变量p所指向的存储空间
指针的使用注意:未经初始化,无法使用,

任何指针都占8个字节


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
0 0
原创粉丝点击