您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-C语言基础学习(四)

2014-03-13 21:58 197 查看
---------------------- IOS培训.期待与您交流! ----------------------

C语言学习笔记四

---既然决定14年要好好的努力一次,那么就不要再轻言放弃,不再在随波逐流。只有努力过、拼搏过,才会知道自己行还是不行!为自己加油!---

---总结的知识点可能有不正确的地方,如果有发现请留言给我,我一定及时更正,不让错误的知识去误导大家,有好的意见也可大声提出来,小弟一定愿意采纳---

函数  (C语言是由一个或者多个函数构成)

1、函数定义格式:

返回值类型  函数名(形式参数列表)

{
函数体

}

2、使用中注意:

函数体内部不能定义和形参一样的变量

int test(int a)

{
int a = 19;   //错误的

}

return 退出函数  返回一个具体值给函数的调用者。

如果不明确声明返回值类型,默认就是int类型

test(){ printf("123");}

就算明确声明返回值类型,也可以不返回任何值

默认情况下,C语言不允许两个函数名称一样,就是不应该有同名函数。

函数不能相互嵌套定义

函数声明最好要定义在main函数之前。 函数声明  函数定义

函数不可以重复定义,但是可以重复声明,且函数声明位置不做具体限定,只要在调用函数之前声明就可以

如果有函数声明,没有函数定义,编译可以通过,编译器只会检测语法合不合理。并不会检测是否定义,但是在链接时会报错。链接时会检测函数是否定义。

函数声明时如果是有参数的只需要指定参数的类型就可以了 如  int sumNumber(int, int);

#include <stdio.h>
int test(int a, int b); 或者 int test(int, int);   //这些是函数声明,最后放在main函数之前
int main()
{
int a,b;
test(a,b);
}
//函数定义
int test(int a,int b)
{
return a + b;
}


3、include指令 拷贝右边文件的所有内容到#include所在的位置  自定义的文件用 ""   系统自带的文件用<>  文件的路径可以是相对路径也可是绝对路径。 如 include "c:/test/a.h"

4、当项目中多人多文件开发时,文件分类一般遵守的规则:
1).  函数的定义放在.c 文件, 函数的声明放在.h 文件
2).  如果要使用某个.c文件中定义的函数,只要#include这个.c 文件对应的.h 文件
3).  .h文件作用:被别人拷贝,编译链接的时候不需要管.h文件

\n 是一个转义字符 \t  tab键  \"  一个引号

(printf函数是一个返回类型为整形的函数 函数返回的字符串常量的字符数,并不是字数  一个汉字占3个字符)

5、计算机中的进制
4种进制 十 二 八 十六
int number = 1010;    //默认情况为 十进制
int number2 = 0b1100; //二进制(0b或者0B开头)
int number3 = 014;    //八进制(0开头)
int number4 = 0xc //十六进制(0x或者0X开头)
%d \ %i 十进制输出整数 
%c 输出字符
%p 输出地址
%f 输出小数
%o 八进制形式输出整数
%x 十六进制形式输出整数
0.089 == .089 其中零可以省略

  int 4字节 (最高位是符号位,所以 取值范围为 负2的31次幂 到 2的31次幂减一) char  1字节  float 4字节  double  8字节

 6、类型说明符 

  long 、 short 、signed 、 unsigned

  其中long 、 short 只能修饰int类型,在被修饰的数值后面可以添加 l  或者 s 进行区分为具体那个修饰符  如  short int c = 1231231s; 

  int 4字节 %d

  short 2字节 %d  short int  == short

  long 8字节 %ld     long  int == long

  long long 8字节 %lld    long long int = long

signed 最高位要当作符号位处理  unsigned  最高位不当作符号位处理
signed == signed int  signed 有符号  正数 0 负数
unsigned == unsigned int  unsigned 无符号 0 正数
不同类型的说明符可以相互组合,但是同类型的不可以。比如 long 和short不能相互组合使用

7、位运算 
按位与 &   只有对应的两个二进制均为1 时,结果才为1,否则为0;
如 9&5  实质1001&101 = 1因此9&5=1
按位或 |   只要有一个是1结果就是1   如 1001 | 0101 = 1101
按位异或 ^  当对应的二进制相异时,结果为1 否则为 0 
如 1001 ^ 101 = 1100
相同数值异或,结果肯定为0 。 异或的数值可以交换 a^b = b^a
任何数值跟0异或,结果还是原来的数值   
用异或可以进行简单两数交换 a = a ^ b; b = a^b; a = a^b;
按位取反 ~    

<< 左移
把整数a 的二进制全部左移n位,高位丢弃,低位补零  实质就是乘以 2的n次方, 由于左移 高位丢弃 所以符号位也会被丢弃,最后的结果可能改变正负
>> 右移 与左移相反

判断奇偶数(用按位与& 运算判断奇偶性)
int a; a & 1 = 1 //奇数 a & 1 = 0; 偶数
用按位与& 判断奇偶数实质:
2的二进制 10  1的二进制为 00  

/*
将一个数已二进制的形式输出
number << temp & 1;可以输出二进制的数字  number 为整形数值  temp为左移位数  范围为从31 到 0

*/

8、字符类型的存储实质
字符类型存储细节  内存存储的是字符对应ASCII表中的数值的对应二进制数值
如 A ASCII 为 65 在存储时 存的是 65的二进制 0100 0001
char c2 = 'A' + 33;  实质为 65 + 33 = 98  对应到ASCII表为 b
单引号'' 只能扩住单字节的字符  char c = '男'; // 错误的  汉字站3 字节    char c = "A"; //错误,不是双引号
'A'  也可以等于 65  对应ASCII表的值  
char  类型也可以当作整数运用,但是范围只有 -128 ~ 127
int = 67 + '4'  字符'4' 对应ASCII表为 52 所以上式计算完结果为 67 + 52 = 119  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: