鱼C论坛

 找回密码
 立即注册
查看: 88330|回复: 2255

[技术交流] 核桃哥C语言笔记【让你六天学完郝斌视频】

  [复制链接]
发表于 2013-4-25 22:24:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
-----------------------------------------------------------------
笔记作者:核桃哥(转载注明)
创建时间:2013-01-02
发布时间:2013年3月17日 15:25:04
郝斌C语言全集教程,
核桃哥初学C源代码笔记     下载:
http://pan.baidu.com/share/home?uk=3741889442&view=share#category/type=0[/hide]
关于初学者学C语言推荐:谭浩强C程序设计(第三版)、郝斌C语言视频教程。
初学笔记,还望各位同行多多指教。

希望大家能关注我的微博:新浪微博:http://weibo.com/u/2645354320
                                      腾讯微博:http://t.qq.com/zhanghe1994
                核桃哥最新歌曲试听地址:http://yc.5sing.com/1604687.html  【为网络小说仙逆量身定做】
---------------------------------------------------------------
[hide]
素数:能被1和本身整数,且不能被2到(本身)的数整除,称为素数。
回文数:正与逆排序数字一样的称为回文数。

基本数据类型数据:

         整型                      -- int              (4个字节)
         短整型                 -- short int      (2个字节)
        长整型                  -- long int       (8个字节)
        逻辑型                  -- bool
        单精度浮点数       --  float           (4个字节)
        双精度浮点数      --  double      (8个字节)
        单字符                  -- char           (1个字节)     ‘A’或“A”单引号表示单字符;
        字符串                   -- char[]       字符串定义与数组基本相同,字符串用双引号括起来“AB”,每个字符以‘\0’隔开。

复合类型数据:
    结构体:结构体可相互赋值。
                                 struct ac      //ac名,  定义了一个新数据类型。

                                    {
                                        int a;

                                        float b;

                                        char c;

                                    };

                定义并初始化:struct ac dl = {0, 0.1,'F'};   //将a、b、c 按顺序赋值。
                定义: struct ac dla;         dla.a = 0;      dla.b = 0.1 ;     dla.c = 'f';
                指针定义:struct ac * dlb = &dla;            dlb->a = 88;   // 等价于(*dlb).a 也等价于dla.a
                指针动态结构体定义:struct Students * p = (struct Students *)malloc(sizeof(struct Students));       p.a ;   p.a

    枚举:把事务一一列出来。
                              enum weekday        --->定义枚举名:weekday
                                {

                                    MonDay, TuesDay      // 从位数0开始,将事务一一列出来,判断时,只能输入枚举内容。
                                };

数组:数组成员称为元素。---int a[5]={0}; ---> 对5名元素初始化为0。
             一维数组:  1. int a[5] = {1,2,3,4,5} 位数从0开始。
                                  2. &a[0] = a = &a
                                  3.int i[5]; printf ("%d",i)  ----> 输出的是i[0]的地址,此规则可配合指针使用。
                                  4.a == *(a+i)   -------> 指针篇章。
   二维数组:int a[3][4]  ------> 定义3行4列。该数组是含有3个元素的一维数组,只不过每个元素都可以再分成4个小元素
                           a[0][0] a[0][1] a[0][2] a[0][3]
                           a[1][0] a[1][1] a[1][2] a[1][3]
                           a[2][0] a[2][1] a[2][2] a[2][3]


  三维数组:int a[3][4][5]; -----> 该数组是含有3个元素的一维数组,只不过每个元素都是4行5列的二维数组。
  多维数组:是不存在的,因为内存是线性一维;n维数组可以当做每个元素是n-1维数组的一维数组。

进制规范:
        八进制前面加0(即零)
        十六进制前面加0X或0x
        十进制前面什么都不加

输出表示  ---->  printf()
         %d表示以整型十进制输出
         %ld表示以长整型十进制输出
         %x或%X或%#X或%#x表示以十六进制输出  【推荐使用%#X】
         %o表示以八进制输出
         %f表示以单精度浮点数输出
         %lf表示以双精度浮点数输出
         %C表示以字符输出
         %S表示以字符串输出

输入表示  ---->  scanf()
         1.非输入控制符必须原样输入加所需输入数据。 例如:scanf ("4%d",&i) 则输入410 ----10所需输入变量
         2.编写断续输入应做适当的处理,如下【非重点】
                  char ch;
                  while ((ch=getchar()) !='\n');     //while循环;getchar获取字符
                   continue;                        //continue继续;

运算符表示方式:
      算术运算符: +    -    *   /(除)    %(取余数)
      关系运算符: >    >=   <   <=    !=(不等于)   ==(等于)
      逻辑运算符: !(非)   &&(并且)  ||(或)  true;(真)  false;(假)  
      赋值运算符:  =   +=   /=   -=   *=   ++  --  //例+=:a+=3 等价于 a=a+3;  ++i 等价于 i=i+1;

      三目运算符: i = 0>2 ? 5 : 1;  ---> if (0>2) {i=5} else {i=1}
      位运算符: &    ---->  3&5 = 1 按位运算并且   
                   |    ---->  3|5 = 7 按位运算或
                   ~    ---->  k=~i    按位取反+1

                   ^    ---->  1^0     按位异或,相同为零,不同为1

                   <<   ---->  i<<3    表示把i所有的二进制位左移3位,右边补零。十进制:左移N位相当于乘以2的N次方。

                   <<   ---->  i<<3    表示把i所有的二进制位右移3位,左边一般补零。十进制:右移N位相当于除以2的N次方。


运算符注意事件:
      除法运算:两个数都是int,则商是int,被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型。
      取余运算:取余%运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同。//例如:-13%23==-13;-13%-23=-13
      &&运算符:左边的表达式为真,右边表达式肯定不会执行
      ||运算符:左边的表达式为真,右边表达式肯定不会执行

流程控制语句:
      if:英文含义“如果”,if默认只能控制一个语句,如果想控制多个语句,就必须把这些语句用{}括起来。
      else:英文含义“否则”,else默认只能控制一个语句,如果想控制多个语句,就必须把这些语句用{}括起来。
      else if:英文含义“否则-如果”,else if默认只能控制一个语句,如果想控制多个语句,就必须把这些语句用{}括起来。

      for(<初始化>; <条件表达式>; <增量>)  ------>  for (int i = 0; i < 100; i++)
      while(条件表达式) ----->int i=1;  --->  while (i<100) {sum=sum+i; ++i;}
      do {语句} while (表达式);  ---->do...while...;  先执行语句后判断,称为:判断循环尾。
      switch (需要跳到的标号) {case 标号: --执行语句--break;-->(跳出)   -----  default: -->(默认) ---执行语句---> break;}
      break:在多层循环中,break只能终止距离它最近的循环;在多层switch嵌套中,break只能终止距离它最近的switch。
      continue; : 继续执行循环条件表达式。

函数:
    1.函数无返回值写法: void max()
    2.函数有返回值写法: int max(void) / void max(int i) {  -----> return 0; }
    3.除了main函数外,其它函数名可随意取。
    4.函数返回值以函数类型为准。
    5.一个程序必须有且只能有一个主函数(main),也是程序的入口和出口。

    6.主函数可以调用普通函数,普通函数不能调用主函数;普通函数可相互调用。

    7.true 英文含义“真”;false 英文含义“假”。例如:return true --->返回真。

    8.所有函数必须写在main函数前面,除非先对函数申明。

    9.函数申明:void f();   //函数申明可不写形参,分号不能丢掉。


常用的系统函数:
    1. double sqrt(double x);   ------->  求X的平方根,double数据类型

    2. int abs(int x)        ------>  求x的绝对值。

    3. double fabs(double x)   ------> 求x的绝对值。
    4. strcpy(,)  ------> 将参数二字符串拷贝到参数一里。两个参数都是字符串类型

指针与指针变量:
概念:
    1. 指针:指针就是地址,地址就是指针,地址就是内存单元的编号。

    2. 指针变量:存放地址的变量称为指针变量。
    3. 指针与指针变量:变量的地址就是指针,存放指针的变量就是指针变量。
  4. 指针变量不能相加,不能相乘,也不能相除。
  5. 两个指针变量指向同一个A数组不同的A数组元素,可进行相减。

  6. 不管什么类型,指针变量只占4个字节。

  7. 多级指针执行结果:               
               
int q;
               
int * a; a = &q; *a = q;
               
int ** b; b = &a; *b = a; **b = *a = q;
               
int *** c; c = &b; *c = &a; **c = b; ***c = *a = q;


语法:
    1. 定义指针变量:变量类型 * 变量名  -------->  int * i

    2. 取普通变量地址: int * i   ----  i = p    //是把p的地址放在i中
    3. 指针变量与普通变量相等: p = *i        //将i地址中的内容存放在p中。


动态内存:
malloc:  int * p = (int *)malloc(4)
    1. 要使用malloc函数,必须添加malloc.h这个头文件
    2. malloc函数只有一个形参,并且形参是整型
    3. 4表示请求系统为本程序分配4个字节
    4. malloc函数只能返回第一个字节的地址
    5. 分配了8个字节, p变量占4个字节, p所指向的内存也占4个字节
    6. p本身所占的内存是静态分配的, p所指向的内存是动态分配的   

free():含义--->释放动态内存。freep(p)表示把p所指向的内存给释放掉。p本身的内存是静态的,不能由程序员手动释放。


补码:不够位数按数据类型进行补位  ----> 1个字节=8位。   假如int类型,4*8=32位
正整数的二进制:除2取余,直至商为零,余数倒叙排序。
负整数的二进制:先求该负数相对应正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1。
负整数二进制求十进制:如果首位是1,则表明是负整数。将所有位取反,末尾加+1,所得的数值就是该负数的绝对值。               
注意:若正整数超出所规定字节范围,则当作负数处理。
        例如: 128 ----> 1000 0000 ----> 当1个字节处理:正负结果一样,符号位为1,所以是-128。如果是两个字节,则不够位数补1,则结果不同。


二进制全部为零含义 --0000000000000000的含义
    1. 数值零

    2. 字符串结束标记符‘\0’
    3. 空指针NULL:NULL本质也是零,而这个零不代表数字零,而表示的是内存单元的编号零。
    4. 计算机规定了,以零为编号的存储单元的内容不可读,不可写。


常见与用法问题:

  1. if...else if... 同时成立,则只输出if。
  2. if...语法正确;
  3. float和double都不能保证可以精确的存储一个小数(也就是误差),所以循环更新的变量不能定义成浮点数。(例如:float i = 0 ; if(0 == i) i不可能精确到0.0000)
  4. 所有判断语句返回值只有2个1或1,例如:if ( 3 % 2 == 1),余数不为0,则逻辑值为1
  5. 自增与自减:前自增整体表达式的值加1之后的值;m = ++j  ---> 执行步骤: j = j + 1 ---> m = j;
                后自增整体表达式的值加1之前的值;k = i++  ---> 执行步骤: k = i ---> i = i + 1;
  6. “,”逗号: i = (3,2,5,6);  括号里面从左到右执行,最后i=6;如果去掉括号,则i=3        
  7. 一维数组:a[5]= {1,2,3,4,5} 是错误的,只有在定义数组的同时才可以整体赋值。
  8. 在C语言中,所有数组成员位数都是从0开始的。
  9. return; 返回函数值return 0;,且终止被调函数return;。
10. 全局变量与局部变量命名相同时,局部变量会屏蔽全局变量。
11. 科学计数法   ------> 3.2e3=3200=3.2*10^3   \\ e表示10,后面数为几次方,例如10的3次方。


12. 强制转换:(数据类型)(变量);
13. sizeof();  用法:sizeo(数据类型或变量名);返回的是所占字节。





评分

参与人数 8荣誉 +16 鱼币 +28 贡献 +20 收起 理由
duyi999 + 3
漠水 + 3 + 3 + 1 支持楼主!
cwq + 1 + 1 感谢楼主无私奉献!
忘我- + 5 + 3 有用
艹樱散丿小羽 + 1 很好的总结!
卡布基米 + 3 热爱鱼C^_^
小甲鱼 + 10 + 10 + 10 热爱鱼C^_^
hlm + 5 + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:27:35 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:31:28 | 显示全部楼层
支持核桃~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:32:02 | 显示全部楼层
顶下1!!!1!!!!!!1!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:32:11 | 显示全部楼层
顶{:1_1:}加油加油加油加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:32:51 | 显示全部楼层
留名 帮顶强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 22:35:11 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-25 23:10:40 | 显示全部楼层
很好的教程谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 00:01:09 | 显示全部楼层
核桃哥最新歌曲试听
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 07:29:06 From FishC Mobile | 显示全部楼层
绝对支持……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2013-4-26 08:03:55 | 显示全部楼层
强烈支持楼主ing……LZ大爱无私,值得学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 08:05:46 | 显示全部楼层
谢谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 08:08:28 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 08:16:09 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 08:20:43 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 09:02:25 | 显示全部楼层
哇。。。谢谢楼主啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 09:09:40 | 显示全部楼层
歌曲不错,很好听
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 09:27:34 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 10:46:09 From FishC Mobile | 显示全部楼层
等等等等等等等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-26 11:17:54 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表