C语言的字符空间与非字符空间你了解吗

 更新时间:2021年08月26日 15:29:56   作者:宝全哥哥  
这篇文章主要介绍了C语言的字符空间与非字符空间,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助

前言

自学笔记,没有历史知识铺垫(省略百度部分)C语言字符空间与非字符空间

一、字符空间与非字符空间概念

字符空间与非字符空间标识

空间首地址结束标识

二、字符空间

首地址:char空间当作字符串来用,通常字符空间操作的函数以str开头,如int strlen(const char *p);结束标识:\0或者0x00

三、非字符空间

首地址:int *p /unsigned char *p /short *p /struct a *p 一般非const char *p都时非字符空间结束标识: 通常函数会提供长度指定的参数int len

四、void * 非字符空间形参化

为了避免参数的长度不一致,导致需要建立多个重复函数处理的问题
func(void * ,size_t len){...}

注意:

遇到void *通常不使用char *p[]开辟空间,可以使用unsigned char *p[] 除非知道该函数参数具体是什么逻辑如果函数形参是int *p之类带有数据类型,通常指的是单独空间而不是连续空间的传递
void func1(void *p, size_t len)
{
    unsigned char *temp = (unsigned char *)p;
    //41
    printf("%X\n", temp[0]);
}
int main()
{
    char a = 'A';
    func1(&a, sizeof(a));
    return 0;
}
void func1(void *p, size_t len)
{
	//4 循环处理使用
    printf("%d\n", len);
    unsigned char *temp = (unsigned char *)p;
    //1
    printf("%X\n", temp[0]);
    //2
    printf("%X\n", temp[1]);
    //3
    printf("%X\n", temp[2]);
    //3
    printf("%X\n", temp[3]);
}
int main()
{
    unsigned char a[] = {1,3,5,7};
    func1(a, sizeof(a));
    return 0;
}

总结

本章主要为C语言字符空间与非字符空间

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++详解实现Stack方法

    C++详解实现Stack方法

    C++ Stack(堆栈)是一个容器类的改编,为程序员提供了堆栈的全部功能,也就是说实现了一个先进后出(FILO)的数据结构
    2022-06-06
  • C++使用easyX库实现三星环绕效果流程详解

    C++使用easyX库实现三星环绕效果流程详解

    EasyX是针对C/C++的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。这篇文章主要介绍了C++使用easyX库实现三星环绕效果,需要的可以参考一下
    2022-10-10
  • C++中初始化二维数组的几种常见方法

    C++中初始化二维数组的几种常见方法

    本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vector作为动态二维数组的灵活性和应用场景,需要的朋友可以参考下
    2025-04-04
  • 使用c++实现OpenCV图像横向&纵向拼接

    使用c++实现OpenCV图像横向&纵向拼接

    这篇文章主要介绍了使用c++实现OpenCV图像横向&纵向拼接,文中有图像拼接函数,可以实现如“长图拼接王”这类小程序的类似功能,大家可以将该函数封装在软件中自由使用
    2021-08-08
  • C语言移除元素的三种思路讲解

    C语言移除元素的三种思路讲解

    这篇文章主要介绍了C语言移除元素的三种思路,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2022-10-10
  • Qt结合libqrencode生成二维码的实现示例

    Qt结合libqrencode生成二维码的实现示例

    本文主要介绍了Qt结合libqrencode生成二维码的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C/C++ Qt 数据库与Chart历史数据展示

    C/C++ Qt 数据库与Chart历史数据展示

    这篇文章主要介绍了Qt利用Qchart组件展示数据库中的历史数据。文中的示例代码讲解清晰,具有一定的学习和工作价值,感兴趣的小伙伴可以学习一下
    2021-12-12
  • C语言用函数实现电话簿管理系统

    C语言用函数实现电话簿管理系统

    这篇文章主要为大家详细介绍了C语言用函数实现电话簿管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C++采用openfilename打开文件对话框用法实例

    C++采用openfilename打开文件对话框用法实例

    这篇文章主要介绍了C++采用openfilename打开文件对话框用法实例,是C++文件操作中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • C++/C 回文字符串的实例详解

    C++/C 回文字符串的实例详解

    这篇文章主要介绍了C++ 回文字符串的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07

最新评论