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語言字符空間與非字符空間

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: