欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:【C語言】內(nèi)存函數(shù)詳細講解

柚子快報激活碼778899分享:【C語言】內(nèi)存函數(shù)詳細講解

http://yzkb.51969.com/

文章目錄

前言strerror的聲明和使用字符串分類函數(shù)字符轉(zhuǎn)換函數(shù)內(nèi)存拷貝函數(shù)(memcpy)memcpy的聲明和使用memcpy函數(shù)的模擬實現(xiàn)

內(nèi)存拷貝函數(shù)(memmove)memmove的聲明和使用memmove模擬實現(xiàn)

內(nèi)存比較函數(shù)(memcmp)memcmp的聲明和使用

內(nèi)存設(shè)置函數(shù)(memset)memset的使用

最后

前言

前面我們學(xué)習(xí)了字符串函數(shù),但字符串函數(shù)只能對字符串進行操作,但在C語言中有很多的數(shù)據(jù)類型,所以本章講解一些內(nèi)存函數(shù),這些函數(shù)可以對任何數(shù)據(jù)類型進行拷貝、追加、比較。

strerror的聲明和使用

char * strerror ( int errnum );

獲取指向錯誤消息字符串的指針。解釋錯誤碼(errnum)所對應(yīng)的錯誤信息。必須包含頭文件errno.hstrerror 生成的錯誤字符串可能特定于每個系統(tǒng)和庫實現(xiàn)。

在vs2022編譯編譯器下的運行結(jié)果

字符串分類函數(shù)

函數(shù)如果他的參數(shù)符合下列條件就返回真iscntrl任何控制字符isspace空白字符:空格‘ ’,換頁‘\f’,換行’\n’,回車‘\r’,制表符’\t’或者垂直制表符’\v’isdigit十進制數(shù)字 0~9isxdigit十六進制數(shù)字,包括所有十進制數(shù)字,小寫字母a-f,大寫字母A-Fislower小寫字母a~zisupper大寫字母A~Zisalpha字母a-z或A-Zisalnum字母或者數(shù)字,a-z,A-Z,0-9ispunct標(biāo)點符號,任何不屬于數(shù)字或者字母的圖形字符(可打?。﹊sgraph任何圖形字符isprint任何可打印字符,包括圖形字符和空白字符

這些函數(shù)都很簡單根據(jù)意思使用就行,下面簡單用幾個。

// 字符串分類函數(shù)使用

int main()

{

//檢查是否為小寫字符

if (islower('c'))

{

printf("是小寫字符");

}

return 0;

}

字符轉(zhuǎn)換函數(shù)

int tolower ( int c ); // 將大寫轉(zhuǎn)化小寫 int toupper ( int c );//將小寫轉(zhuǎn)化為大寫

//tolower的使用

int main()

{

char arr[] = { "Hello WoRD" };

for (int i = 0; i < sizeof(arr); i++)

{

//大寫轉(zhuǎn)化為小寫

arr[i]=tolower(arr[i]);

}

printf("%s", arr);

return 0;

}

toupper的使用,是一樣的,這里就不展示了,讀者可以自己嘗試一下。

內(nèi)存拷貝函數(shù)(memcpy)

memcpy的聲明和使用

void * memcpy ( void * destination, const void * source, size_t num );

函數(shù)memcpy從source的位置開始向后復(fù)制num個字節(jié)的數(shù)據(jù)到destination的內(nèi)存位置。這個函數(shù)在遇到 ‘\0’ 的時候并不會停下來。如果source和destination有任何的重疊,復(fù)制的結(jié)果都是未定義的。

使用

//memcpy的拷貝整形使用

int main()

{

int arr[] = { 1,2,3,4,5,6,7,8 };

int arr1[15];

memcpy(arr1, arr, sizeof(arr));

for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

printf("%d ", arr1[i]);

}

return 0;

}

memcpy函數(shù)的模擬實現(xiàn)

//memcpy模擬實現(xiàn)

void* my_memcpy(void* des, const void* sour, size_t num)

{

//

assert(des && sour);

while (num)

{

*(char*)des = *(char*)sour;

++(char*)des;

++(char*)sour;

num--;

}

}

內(nèi)存拷貝函數(shù)(memmove)

memmove的聲明和使用

void * memmove ( void * destination, const void * source, size_t num );

和memcpy的差別就是memmove函數(shù)處理的源內(nèi)存塊和目標(biāo)內(nèi)存塊是可以重疊的。如果源空間和目標(biāo)空間出現(xiàn)重疊,就得使用memmove函數(shù)處理。 使用

int main()

{

int arr[] = { 1,2,3,4,5,6,7,8 };

memmove(arr, arr + 2, 16);

for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

printf("%d ", arr[i]);

}

return 0;

}

memmove模擬實現(xiàn)

有重疊部分時

當(dāng)des小于sour的地址時從前向后拷貝。當(dāng)des大于sour的地址時從后向前拷貝

沒重疊部分時

從前向后拷貝、從后向前拷貝都可以。

void* my_memmove(void* des, const void* sour, size_t num)

{

assert(des&& sour);

void* ret = des;

//從前向后拷貝

if (des < sour)

{

while (num)

{

*(char*)des = *(char*)sour;

++(char*)des;

++(char*)sour;

num--;

}

return ret;

}

//從后向前拷貝

while (num--)

{

*((char*)des + num) = *((char*)sour + num);

}

return ret;

}

內(nèi)存比較函數(shù)(memcmp)

memcmp的聲明和使用

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

比較從ptr1和ptr2指針開始的num個字節(jié)請注意,與 strcmp 不同,該函數(shù)在找到 null 字符后不會停止比較。返回值如下: 使用

int main ()

{

char buffer1[] = "DWgaOtP12df0";

char buffer2[] = "DWGAOTP12DF0";

int n;

n=memcmp ( buffer1, buffer2, sizeof(buffer1) );

if (n>0)

printf ("'%s' is greater than '%s'.\n",buffer1,buffer2);

else if (n<0)

printf ("'%s' is less than '%s'.\n",buffer1,buffer2);

else

printf ("'%s' is the same as '%s'.\n",buffer1,buffer2);

return 0;

}

內(nèi)存設(shè)置函數(shù)(memset)

memset的使用

void * memset ( void * ptr, int value, size_t num );

把ptr指向的前num個字節(jié)的空間設(shè)置成value的值。

int main()

{

char arr[] = { "hello word" };

memset(arr, 'x', 5);

printf("%s", arr);

}

最后

感謝大家的觀看, 大家可以在評論區(qū)留言,你們的支持就是我最大的動力。

柚子快報激活碼778899分享:【C語言】內(nèi)存函數(shù)詳細講解

http://yzkb.51969.com/

相關(guān)文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19523638.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄