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

目录前言一、字符空间与非字符空间概念二、字符空间三、非字符空间四、void * 非字符空间形参化总结

前言

自学笔记,没有历史知识铺垫(省略百度部分)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语言的字符空间与非字符空间你了解吗

相关文章:

你感兴趣的文章:

标签云: