c语言疑惑点

const:

     编译器通常不为普通的const分配内存,而是将它们保存在符号表中,

     这使它成为编译期间的常量,没有存储和读取操作,使它的效率也很高

     

     const int * const p4 = &a;

     const int * p4 = &a;

     int * const p4 = &a;

     记忆技巧     看*的位置

     如果const在*的左侧 表示值不能改变,但是指向可以改变

     如果const在*的右侧 表示指向不能改变,但是值可以改变

     如果在*但两侧都有const标识指向和值都不能改变

5)malloc函数:

int main(int argc, const char * argv[]) {

    // p中存放的是新申请的内存空间的首地址

    //如果不对malloc申请的空间赋值,则其中存的是垃圾数

    int *p = (int *)malloc(4 * sizeof(int));//16个字节

    //calloc: 分配指定块数和长度的内存空间

    //格式:calloc(块数,长度)

    //分配了4块,每一块内存长度为4字节的内存空间

    //它们的地址也是连续的可以自动初始化为0

    //int *p1 = (int *)calloc(4, sizeof(int));

    //relloc可以给已经存在的内存空间扩充大小

    //返回新内存空间地址

    //p = realloc(p, 40 * sizeof(int));

    //使用一个函数进行初始化memset, 中间放的是asic码;

    //memset(p, 'A', 16);

    if(p != NULL){

        *p = 10;

        *(p + 1) = 100;

        *(p + 2) = 1000;

    }else{

        printf("申请内存空间失败!");

    }

    printf("%p %p %p", *p, *(p + 1), *(p + 2));

    return 0;

}

原文地址:https://www.cnblogs.com/coolcold/p/4674361.html