• c语言提高学习笔记——02-c提高03day


    在学习c语言提高总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

    02-c提高03day

    目录:
    1、堆分配内存API
    2、sscanf
    3、练习:查找子串
    4、一级指针易错点
    (1)越界
    (2)指针叠加会不断改变指针指向
    (3)返回局部变量地址
    (4)同一块内存释放多次
    5、const使用
    6、指针的指针(二级指针)
    (1)二级指针基本概念
    (2)二级指针做形参输出特性
     (3)二级指针做形参输入特性
    (4)二级指针练习
    7、位运算
    (1)位逻辑运算符
    1)按位取反~
    2)位与(AND):&
    3)位或(OR):|
    4)位异或:^
    (2)移位运算符
    1)左移<<
    2)右移
    3)用法:移位运算符

    1、堆分配内存API:

    1. 1 #include<stdlib.h>
    2. 2 void *calloc(size_t nmemb,size_t size); 3 功能: 4 在内存动态存储区中分配nmemb块长度为size字节的连续区域。calloc自动将分配的内存置05 参数: 6 nmemb:所需内存单元数量 7 size:每个内存单元的大小(单位:字节) 8 返回值: 9 成功:分配空间的起始地址 10 失败:NULL
    1. 1 #include<stdlib.h>
    2. 2 void *realloc(void *ptr,size_t size); 3 功能: 4 重新分配用malloc或者calloc函数在堆中分配内存空间的大小。realloc不会自动清理增加的内存,需要手动清理,如果指定的地址后面有连续的空间,那么就会在已有地址基础上增加内存,如果指定的地址后面没有空间,那么realloc会重新分配新的连续内存,把旧内存的值拷贝到新内存,同时释放旧内存。 5 参数: 6 ptr:为之前用malloc或者calloc分配的内存地址,如果此参数等于NULL,那么和realloc与malloc功能一致 7 size:为重新分配内存的大小,单位:字节 8 返回值: 9 成功:新分配的堆内存地址 10 失败:NULL

    示例代码

    1. 1 void test01(){
    2. 2   int* pl=calloc(10,sizeof(int));//开辟了40个字节,并赋值为0 3   if(pl==NULL){ 4     return5   } 6   for(int i=0;i<10;i++){ 7     pl[i]=i+18   } 9   for(int i=0;i<10;i++){ 10     printf("%d",pl[i]); 11   } 12   printf("\n");    if(p1 != NULL)    {      free(p1);      p1 = NULL;    } 13    14 } 15 16 void test02(){ 17   int* pl=calloc(10,sizeof(int));//开辟了40个字节,并赋值为0 18   if(pl==NULL){ 19     return20   } 21   for(int i=0;i<10;i++){ 22     pl[i]=i+123   } 24   //申请空间,
  • 相关阅读:
    猿创征文|瑞吉外卖——管理端_订单明细
    Numpy切片与索引
    微软警告 Windows 8.1 用户:系统即将停止支持,建议购买 Win11/10 新设备
    Spring源码------IOC容器初始化过程
    flutter 常用组件:列表ListView
    网页头部的声明应该是用 lang="zh" 还是 lang="zh-CN"?
    DevSecOps内置安全保护
    Spring Boot 整合 JSP
    提升复杂场景三维重建精度 | 基于PaddleSeg分割无人机遥感影像
    Python 中并发方面的差异
  • 原文地址:https://blog.csdn.net/qq_21685903/article/details/127736525