------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. 黑客长期摇号不中"黑"掉北京小客车摇号网

    新闻链接:http://www.2cto.com/News/201310/248936.html 新闻时间:2013-10-11 新闻正文: 为发泄长期摇号不中的不满,同时也为自己研发的软件打广告,硕 ...

  2. 关于Elasticsearch单个索引文档最大数量问题

    因为ElasticSearch是一个基于Lucene的搜索服务器.Lucene的索引有个难以克服的限制,导致Elasticsearch的单个分片存在最大文档数量限制,一个索引分片的最大文档数量是20亿 ...

  3. Objective-C 与 C++ 的异同

    stackflow 上有同学提问"C++ 与 Objective-C 有什么异同?"楼下的提供的两个资料挺不错的. 其一是: Pierre Chatelier 写的 <Fro ...

  4. WP8.1 Study17:网络之后台下载/上传及HttpClient

    一.后台下载/上传 1.简介 使用BackgroundTransferGroup可以十分方便操作上传及下载文件,BackgroundDownloader和BackgroundUploader类中的方法 ...

  5. Rhel6-sersync配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主服务器: 192.168.122.160 server60.example.com 目标服务器: 1 ...

  6. 反向Ajax,实现服务器向客户端推送消息

    反向Ajax的基本概念是客户端不必从服务器获取信息,服务器会把相关信息直接推送到客户端.这样做的目的是解决Ajax传统Web模型所带来的一个限制:实时信息很难从技术上解决.原因是,客户端必须联系服务器 ...

  7. 黑马程序员——OC语言 三大特性之多态

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之一的多态 (一)多态的基本概念 OC对象具有多态性体现在 Per ...

  8. quartz.net 使用(一)-执行定时计划任务

    一.使用nuget安装所需要的包 Install-Package Quartz 二.实现自己的job继承IJob public class FirstJob : IJob { public void ...

  9. HDU 1829 分组并查集

    题意:有两种性别,每组数据表示是男女朋友,判断输入的几组数据是否有同性恋 思路:http://blog.csdn.net/iaccepted/article/details/24304087 分组并查 ...

  10. inline-block

    在CSS中,块级对象元素会单独占一行显示,多个block元素会各自新起一行,并且可以设置width,height属性:而内联对象元素前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满 ...