C语言中一些比较基础而又重要的知识

本文介绍了C语言中的一些基础且重要的知识点,包括字符串截取、初始化与内存分配、内存拷贝、比特取高低位、类型转换以及输出结果到文件。详细讲解了如何进行字符串操作、动态内存管理、类型转换以及文件输出等实用技巧。
摘要由CSDN通过智能技术生成

1、字符串截取

对于字符串char *tar = "Mine_tar1_tar2",想要获取tar1tar2,可使用strstrstrchr获取目标字符()的位置,再利用strcpy,第三个参数设置截取长度。

另外strncmp的第三个参数表示比较俩字符串前n

  

2、初始化及内存分配

很多字符串在用strcpy拷贝时会报错或者直接赋值时会出现乱码,都是因为没有初始化。

char *str = (char *)malloc(sizeof(char));

memset(str,0,sizeof(char));即可

有时在编译时并不知道数组的长度,可以这样动态分配数组

一个自定义结构体的初始化

MYSTUCT mystr;

memset(&mystr,0,sizeof(mystr));

和下面皆可

MYSTUCT *mystr;

memset(mystr,0,sizeof(*mystr));

如果是二维的数组,在初始化时能否直接将声明的二维数组的数组名传递给一个指针呢?编译后就会发现是有问题的,一维数组的数组名即为指向该数组的指针,该指针值保存了数组存放在内存中的一块连续区域的起始地址,所以数组的下标就表示了这片内存区域的某存储区相对于起始地址的偏移量;而二维数组在概念上远比一维数组复杂,或者说二维数组以一种晦涩的方式构建在一维数组之上。

之前在C++博客里看见过一篇文章,记了一点笔记如下:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值