C語言的字符空間與非字符空間你了解嗎
更新時間:2021年08月26日 15:29:56 作者:寶全哥哥
這篇文章主要介紹了C語言的字符空間與非字符空間,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
前言
自學(xué)筆記,沒有歷史知識鋪墊(省略百度部分)C語言字符空間與非字符空間
一、字符空間與非字符空間概念
字符空間與非字符空間標(biāo)識
空間首地址結(jié)束標(biāo)識
二、字符空間
首地址:char空間當(dāng)作字符串來用,通常字符空間操作的函數(shù)以str開頭,如int strlen(const char *p);結(jié)束標(biāo)識:\0或者0x00
三、非字符空間
首地址:int *p /unsigned char *p /short *p /struct a *p 一般非const char *p都時非字符空間結(jié)束標(biāo)識: 通常函數(shù)會提供長度指定的參數(shù)int len
四、void * 非字符空間形參化
為了避免參數(shù)的長度不一致,導(dǎo)致需要建立多個重復(fù)函數(shù)處理的問題
func(void * ,size_t len){...}
注意:
遇到void *通常不使用char *p[]開辟空間,可以使用unsigned char *p[] 除非知道該函數(shù)參數(shù)具體是什么邏輯如果函數(shù)形參是int *p之類帶有數(shù)據(jù)類型,通常指的是單獨空間而不是連續(xù)空間的傳遞
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 循環(huán)處理使用
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;
}
總結(jié)
本章主要為C語言字符空間與非字符空間
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++使用easyX庫實現(xiàn)三星環(huán)繞效果流程詳解
EasyX是針對C/C++的圖形庫,可以幫助使用C/C++語言的程序員快速上手圖形和游戲編程。這篇文章主要介紹了C++使用easyX庫實現(xiàn)三星環(huán)繞效果,需要的可以參考一下2022-10-10
Qt結(jié)合libqrencode生成二維碼的實現(xiàn)示例
本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示
這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學(xué)習(xí)和工作價值,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
C語言用函數(shù)實現(xiàn)電話簿管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言用函數(shù)實現(xiàn)電話簿管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12

