C与指针学习笔记】的更多相关文章

一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"double free"的oops. int main(int argc, char **argv) { int i; int *p = new int; delete p; p = NULL; delete p; ; } 3.智能指针的实现思想:使用可以自动销毁的局部对象来描述不可以自动销毁的位于堆空间中的…
http://blog.csdn.net/alps1992/article/details/45052403 虚函数 虚函数就是用virtual来修饰的函数.虚函数是实现C++多态的基础. 虚表 每个类都会为自己类的虚函数创建一个表,来存放类内部的虚函数成员. 虚函数表指针 每个类在构造函数里面进行虚表和虚表指针的初始化. 下面看一段代码: // // main.cpp // VirtualTable // // Created by Alps on 15/4/14. // Copyright…
本文参考http://www.prglab.com/cms/pages/c-tutorial/advanced-data/pointers.php 1.存储其它变量地址的变量(如下面例子中的address),我们称之为指针(pointer). 2.地址操作符/去引用操作符 在变量名标识符前面添加的与符号ampersand sign (&),该符号表达的含义是"......的地址(address of ...)",所以称之为地址操作符. 例如:address=&value…
  深入理解C指针     第1章 认识指针   理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址.     1.1 指针和内存   C程序在编译后,以三种方式使用内存: 1. 静态.全局内存 在程序开始运行时分配,直到程序终止才消失.所有函数都能访问全局变量,静态变量的作用域则局限在定义它们的函数内部.   2. 自动变量 在函数内部声明,在函数被调用时才创建.作用域局限于函数内部,而且生命周期局限在函数的执行时间内.   3. 动态内存 动态内存分配在堆中,可根据需要释放,直…
1 错误报告 (1)perror函数 void perror(char const *message) error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户程序,表示操作系统的准确原因. (2)终止执行 void exit(int status) status参数返回给操作系统,用于提示程序是否完成.预定义中EXIT_SUCCESS和EXIT_FAILURE分别提示程序的终止是成功还是失败. 2 流  绝大数流是完全缓冲的,这意味着读取和写入实际上都是…
1 动态内存 比如声明数组得时候,我们需要提前预估数组长度,分配大了浪费,少了就更不好操作了.从而引入动态分配,需要的时候再分配. (1)malloc和free void *malloc(size_t size) void free(void *pointer) 注意需要对每个malloc返回的指针进行检查,确保不是NULL. (2)calloc和realloc malloc和callo得区别是后者在返回指向内存的指针之前把它初始化位0 void *calloc(size_t num_eleme…
1 函数声明 (1)原型 告诉编译器函数的参数数量和每个参数的类型以及返回值的类型.编译器通过检查原型之后,就可以检查这个函数得调用,从而来确保参数正确,返回值无误. 通用技巧,将原型写在一个头文件当中,需要他的包含进来就好了 func.h int *func(int *value,int len) func.c #include "func.h"' void a(){} void b(){} (2)函数的参数 c函数的所有参数都是"传值调用"方式进行传递,也就是函…
1 操作符 (1)移位操作符 左移<<:值最左边的几位丢弃,右边多出来的几个空位用0补齐 01101101 011(丢弃)01101000(后面三位补0) 右移>>: 算术左移和逻辑左移只有操作数是负值的时候才不一样.算术移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均位1,符号为0则移入的位均为0,因为这样可以保证原来数的正负不变. 10010110右移2位,逻辑移位为00100101,算术移位11100101 案例1: //计算1的位的个数 int count_…
有些任务无法用其他语言实现,如直接访问硬件,但C却可以. C对数组下标引用和指针访问并不进行有效性检查,这可以节省时间,但你在使用这些特性时,就必须特别小心.…
C++ primer plus 16.2节介绍了auto_ptr,该模板类在C++11中已弃用,目前已被shared_ptr代替. auto_ptr又叫做智能指针,用于管理动态内存分配的用法. 为什么要有auto_ptr? 首先看一个例子, void remodel(string &str){ string *ps = new string(str); ... str = ps; return; } 此例子有什么缺陷呢? 函数结束的时候没有释放内存,这导致了内存的泄露,指针ps会被释放,但是其指…