您好,登錄后才能下訂單哦!
這篇文章主要講解了“C語言的字符空間與非字符空間是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言的字符空間與非字符空間是什么”吧!
一、字符空間與非字符空間概念
二、字符空間
三、非字符空間
四、void * 非字符空間形參化
字符空間與非字符空間標識
空間首地址結束標識
首地址:char空間當作字符串來用,通常字符空間操作的函數以str開頭,如int strlen(const char *p);結束標識:\0或者0x00
首地址:int *p /unsigned char *p /short *p /struct a *p 一般非const char *p都時非字符空間結束標識: 通常函數會提供長度指定的參數int len
為了避免參數的長度不一致,導致需要建立多個重復函數處理的問題
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語言的字符空間與非字符空間是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。