zoukankan      html  css  js  c++  java
  • 零散的C笔记

    ▲▼●◆■★
    ①②③④⑤⑥⑦
    如何表达数组类型
    如何表达函数指针
    c++编译器如何管理两函数之间变量的关系?
    如果定义了一个.cpp,然后再改为.c可能会出现问题,找不到main函数
    指针变量和它所指向的内存空间变量是两个不同的概念
    指针指向谁,就把谁的地址赋给指针变量
    内存四区概念:
    主调函数(main等)调用被调函数
    1.main函数分配的内存都可以在被调函数里使用
    2.如果在被调函数里面的临时区(栈)分配内存,主调函数是不能使用的(回忆形参实参交换数据)

    c可以在栈区(临时区)分配内存,但用完后直接被编译器回收
    主函数调用被调函数,被调函数的返回值先进栈,然后参数,最后运行

    函数调用模型<————>函数内存(四区)模型

    形参也是被调用该函数的参数,只不过具有对外的属性


    *p放在等号左边是去修改内存空间的值(写)
    *p放在等号右边是从内存空间里取值(读)
    *就像一把钥匙,通过一个地址,去打开一扇门,去修改门后面的内存空间

    多重指针:
    对参数的指针类型应该怎么理解
    理解角度需要从两个角度出发
    站在c/c++编译器的角度 对形参。如果是指针类型,c编译器只会分配四个自己的内存

    指针数据类型到底是什么
    指针的数据类型实在它所指向的内存空间的数据类型
    指针的数据类型具有依附特性(char、int、double……)

    有关字面量的理解:
    常量不能取地址吗?
    int* a=&10;//10是字面量 不能取地址,没有放在堆栈、全局区,可以按照放在代码区之类的区域内理解它
    寄存器内的东西不能取地址

    堆栈的生长方向:
    栈的开口向下,不断压栈内存地址越来越小
    堆相反

    int a=10;
    int* p=NULL;
    p=&a;
    //p是谁的地址,*p就去间接的修改谁的值
    *p=20;
    引:p是实参的地址呢?

    向NULL空间写数据 读数据;
    char* p=NULL;
    *p=100;
    向自己不知道的内存空间写数据
    char *p=0x77;
    *p=100;

    指针是为内存服务的,没有内存哪来的指针;
    不从内存四区的角度看,讲指针等于白讲

    memcpy()

    s指向常量字符串,这部分内存空间是不可修改的。
    s[]后,s指向的空间是栈空间,是可以修改的。

    在C中没有字符串这种类型,是通过字符数组(char buf[100])去模拟的
    字符串和字符数组的区别是不是带有 ?

    const int a=10;
    int const b=10;

    const char* c;
    char* const d; //常量指针 d++;(error:常量指针不能++)
    const char* const e;

    http://blog.csdn.net/melody_fhm/article/details/6683504

    //指针常量
    //常量指针


    数组做函数参数会退化为指针


    char* buf[]={"while","case","static","do",0}
    C语言NULL的宏定义是0
    #define NULL 0

    ★不免野指针的方法:
    1.初始化时定义指针变量,指针变量赋值成NULL
    2.释放时,判断是否为NULL,不是NULL则free()
    3.释放完毕以后再赋值成NULL

    数组和指针做函数参数的等价关系:

    char buf[10]==>char*      void func(int a[10])==>void func(int a[])==>void func(int* a)                                       

    char* buf[10]==>char** buf

    char a[5][10]==>char(*buf)[10]   void func(int a[5][10])==>void func(int a[][10])==>void func(int (*a)[3])

    出现上图提示信息原因:

    1.malloc的某个地方越界

    2.拷贝数据或分配内存不对

  • 相关阅读:
    次小生成树(SST)
    传纸条(scrip)
    动态规划练习5
    动态规划练习4
    整数的lqp拆分
    [HNOI2002]跳蚤
    BZOJ1803: Spoj1487 Query on a tree III
    51nod-1526: 分配笔名
    51nod-1615: 跳跃的杰克
    BZOJ2588: Spoj 10628. Count on a tree
  • 原文地址:https://www.cnblogs.com/leejxyz/p/5251705.html
Copyright © 2011-2022 走看看