------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

开发过程:


编写->编译(只编译源文件,编译成*.o  只会检测语法是否合理,不会检测函数是否存在)->链接(将所有相关的.o文件和C函数库整合成可执行文件  会检测函数是否定义)->运行

第一部分:

1.预处理指令:在编译之前执行的指令(eg:include <stdio.h>)。
 注:系统自带文件用< >,自己写的用"".( eg:include "1.txt");
 .h是头文件,用来函数声明
地址:每个字节的系统编号。

注:变量和函数名 由字母、数字、下划线组成,第一个必须是字母或下划线。

2.如果没有返回值,则默认返回int类型。不知道返回值可使用void(void代表不需要返回值).

3.函数问题:
     (1)只能有一个主函数(main函数  主函数是整个语言的入口)
     (2)自定义函数一般要放到main函数前(如果放在主函数后,则要在主函数前对自定义函数进行声明)。
     (3)不能重复定义函数。可重复声明函数。
   注:如果要将自定义函数放main函数后,则首先要在main函数前声明,然后在main函数中调用。 
头文件用来声明函数,普通文件用来定义函数。

4.字符问题
 

 数据类型所占用编译器长度(单位:字节 )
 字节分配规则:由大到小,优先分配地址大的(只要变量被定义,变量地址就被分配  每个字节8位)。
 

   


5.基础运算:

  逗号表达式: 用逗号连接起来的表达式,形式为 表达式1,表达式2,表达式3,.....,表达式n
       运算方法为从左至右,返回值为最后一个表达式的值。

   sizeof( ):用来计算一个变量、常量或数据类型所占用的内存字节数。

   printf() 函数从右往左进行运算。
 a++,++在后面的是碰到;号才加1,但是加了括号,就先运算,不碰到;也可以先加。
 注:任何非0值都为真。
   
signed和unsigned的区别:
   signed:有符号位,最高位表示符号;0为整数,1为负数。eg:32位的最大有效数是2的31次方减1。    
   unsigned:无符号位,最高位继续为有效位。eg:32位的最大有效数是2的32次方减1。

注:相同类型的类型说明符不能放一起修饰,例如short和long不能放一起使用。

6.字符类型
    %d     int
    %f      float、double
    %ld    long
    %lld    long long
    %c      char
    %s       字符串
    %zd     unsigned long 

7.getchar,putchar,gets,puts区别
   getchar:输入一个字符。
     缺点:
       输入流程:输入设备->内存缓冲区->程序getchar 
       用户输入的字符会首先存放在缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中),然后再使用getchar读取缓冲区中的内容,也就是说getchar( )会将回车建输出
  
   putchar:输出一个字符
   gets:输入一个字符串
   puts:输出一个字符串

8.scanf特别注意点
  1>scanf语句从前往后开始匹配,如果匹配到不相同的,则结束输入。
  2>当scanf中参数之间分隔符是空格是,输入点可以用空格、tab和回车键代替。
  3>如果指定了接受数据长度,则最后多余长度的会自动省略

第二部分:

1.预处理指令:
      定义:1>预处理指令是在程序开始编译前就已经编译完毕了。预处理指令
                2>全部是#开头。
     分类: 宏定义、条件编译、文件包含
     作用域:从编写指令开始,一直到文件结尾。

2.宏定义(替换代码)
 关键词:#define 宏名 值    (宏定义只负责换代码,并不负责运算   值中每个参数要加( ))
   eg:#define count 4  //会将程序中所有count 转化成4  如果代码中是“count” 则此count不会被替换
    #undef  取消define宏的作用。
    注:宏名使用大写,变量名用小写。eg:#DEFINE

3.条件编译(文件编译时存在)
    #if()
        A //如果只编译了A,则下面的B和C不会保存在内存中 
    #elif()
        B
    #else()
        C
    #endif  
 注:1>条件编译只编译宏中定义的语句,且如果elif或else没有判断,则此没有保存在内存中(不参与编译的不会保存在内存中)。
        2>endif必须添加
 #if defined() 相当于 #ifdef
#if undefined 相当于#ifndef

4.文件包含
    注:不允许循环包含(互相包含)。
 防止多次包含方法:
  #ifndef  ...
   #define  ...
         .....
 #endif

eg: #idndef _TEST  // 如果没有定义_TEST,则会运行以下,就是声明test( )函数,如果定义了,就不会进行声明,防止了文件重复包含
        #define _TEST
            test();
      #endif

5.类型定义 typedef (取别名)
    eg:#typedef int myint;    将int类型的别名定义为myint
    使用场合:
        1>基本数据类型
            typedef int myint;
        2>指针
            typedef  char *  p;//p是名字
        3>结构体
            typedef struct student
                {
                int age;
                } stu;   //类型名是stu
            (1)定义结构体的指针:
                typedef struct student  * p;//p是名字
        4>枚举    
        5>指向函数的指针
                typedef int (*name)(int , int) //name是定以后的名字

6.static和extern
    6.1对函数的影响
     外部函数:定义的函数能被本文件和其他文件访问。(函数默认为外部函数)(其它文件可访问)
        注:外部函数不能有重名
     内部函数:定义的函数只能被本文件访问,其他文件不能访问。(只有本文件访问)
         注:内部函数可以不同文件中函数重名
     extern:声明或定义此函数是外部函数。
        eg:extern void test();
     static:声明或定义此函数是内部函数。

    6.2 对变量的影响
        全局变量分类:
            外部变量:定义的变量能被本文件和其他文件访问。(其它文件可访问)
                注:不同文件中的同名外部变量,都代表着同一个变量。
            内部变量:定义的变量只能被本文件访问(只有本文件访问)

      static对局部变量影响
            (1)延长局部变量生命周期,局部变量就不会随着函数调用结束就被销毁,而是等到程序结束后才被销毁。
       (内存空间中一直有此变量)    
            (2)没有改变局部变量的作用域。

        使用范围:
            (1)某些变量值保持不变。
            (2)某些变量值使用频繁

黑马程序员_ C语言基础(一)的更多相关文章

  1. 黑马程序员_ C语言基础(二)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述):   1.Hello W ...

  2. 黑马程序员_ C语言基础之指针(三)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移 ...

  3. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  4. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  5. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  6. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  7. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  8. 黑马程序员_毕向东_Java基础视频教程——java语言组成部分(随笔)

    java语言组成部分 Java是一种强类型语言,所谓强类型语言就是对具体的数据进行不同的定义.对类型的划分的十分细致,对内存中分配了不同大小的内u你空间 关键字 标识符 注释 变量和常量 运算符 语句 ...

  9. 黑马程序员_毕向东_Java基础视频教程——类型转换(随笔)

    类型转换 class Test{ public static void main(String[] args) { byte b = 3; // b = b + 2; /* Test.java:5: ...

随机推荐

  1. Linux 学会这些基本可以啦

    1,Linux 内壳文件:cat /etc/issue OR /etc/redhat-release ubuntu[apt-get install -y vim] centos[yum install ...

  2. ASP.NET Web API 入门示例详解

    REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构. ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类 ...

  3. 高性能Mysql

      高性能 高可用 易伸缩 安全 高并发 定义 吞吐量(单位时间内多少次查询) MTBF(平均失效时间) MTTR(平均恢复时间)     同时工作的线程数或连接数 系统       事务 表锁.行级 ...

  4. DEV控件,PopupContainerEdit,PopupContainerControl,TreeList,弹出控制问题

    功能描述 PopupContainerEdit的PopupControl设置为PopupContainerControl, PopupContainerControl的里面放一个TreeList, T ...

  5. <转>.php导出excel(多种方法)

    基本上导出的文件分为两种:1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件. ...

  6. (转)PhoneGap工作原理及需改进的地方

    原文:http://mobile.51cto.com/web-330900.htm PhoneGap工作原理及需改进的地方 2012-04-18 16:42 佚名 网络整理 字号:T | T 目前开发 ...

  7. hdu 2065

    ps:我的天...看网上各种难..对于我这个比较懒得人...我就找规律直接水过去了...前20一个循环,注意跳过第一轮的3个数就行..然后觉得比较坑的是,那个输入N,要用long long型... 代 ...

  8. SSH basics

    SSH, Secure SHell, was designed and created to provide the best security when accessing another comp ...

  9. BZOJ 2286 树链剖分+DFS序+虚树+树形DP

    第一次学习虚树,就是把无关的点去掉.S里维护一条链即可. #include <iostream> #include <cstring> #include <cstdio& ...

  10. Scalding初探之三:Hadoop实战

    Java版本 如果在Scala工程中混入Java类导致java版本不match,可能会抛错 java.lang.UnsupportedClassVersionError: XXX Unsupporte ...