基础学习第一弹

来源:互联网 发布:c语言 购物款 编辑:程序博客网 时间:2024/05/16 03:37

10-24学习总结

  • C语言关键知识复习

知识总览

  1. 基础知识:预处理,数据类型,运算符和表达式,控制流,函数及变量,数组,指针,结构、联合、枚举
  2. 数据结构和算法:线性表,链表,串,树,图,查找算法,排序算法…
  3. 库函数:< malloc.c> < string.h>< ctype.h> < stdlib.h>< stdio.h>< assert.h>< math.h>…

C语言的一些重要知识

内存存储

  1. 栈:编译期间就能确定存储大小的变量的存储区,用于在函数作用域内创建、在离开作用域后自动销毁的变量的存储区。通常是局部变量函数参数等的存储区。它的存储空间是连续的,两个紧接着定义的局部变量,存储空间也是紧挨着的。栈的大小是有限制的,不要定义超大数组(VC++默认栈大小是1M)。
  2. 堆:通常用于那些在编译期间不能确定存储大小的变量的存储区,它的存储空间是不连续的,一般由malloc(或new)函数来分配内存块,并且需要free(或delete)释放内存。如果没有释放,会发生内存泄漏。两个紧接定义的指针变量,内存块不一定紧挨着。堆的大小一般没有限制。
  3. 全局/静态存储区:跟“栈”差不多,但是是针对全局变量和静态变量的。
  4. 常量存储区:全局可见,不可被修改。

函数

  1. 函数的参数:传值(传指针)和传址(传引用)
  2. 函数的返回值:传值和传址

常量和指针

  1. 常量指针:指向的内容不可修改,但可以指向不同地址
  2. 指针常量:指向的内容可以修改,但不可修改指向的地址

临时对象

不可见(函数参数类型的隐式转换;函数返回对象)函数返回对象会产生临时对象,会伴随一定的构造和销毁成本,影响效率。很多时候,采取传指针的方式取返回值

数据类型

不要忽略,不要超出范围。

一个简单的例子分析

#include "stdafx.h"main(int argc,char* argc[]){    printf("hello world!\n");    return 0;}
  1. 预处理

    1. 常将一些经常引用而不会修改的标准头文件放在stdafx.h中。
    2. 文件包含:#include<>或#include ” “
    3. 宏替换:#define,定义符号常量、函数功能、重新命名、字符串的拼接等
    4. 条件编译:#if、#ifndef、#ifdef、#endif、#undef等
    5. 布局控制:#pragma,为编译程序提供非常规的控制流信息。
      (1)#pragma warning(disable:XXX)例如prama warning(disable:4871)就是在程序编译时不显示4871警告信息。
      (2)#pragma comment(…):将一个注释记录放入一个对象文件或者可执行文件中。常用的lib关键字可以用于链接一个库文件,比如#pragma comment(lib,“user32.lib”)指令来将user32.lib库文件加入到工程中。
      (3)#pragma once :保证头文件只被编译一次。

    _MSC_VER:MSC是微软的c编译器,VER是版本

  2. 控制台

    控制台程序跟DOS程序是不一样的。

  3. 调试

    学会设置断点
    VC有个Call Stack窗口,查看更多程序流程细节。

  4. 杂项
    main(int argc,char* argv[])中,argc,argv 的作用传参。
    特殊字符常量等。。。
原创粉丝点击