C語(yǔ)言從strcpy到自定義字符串處理函數(shù)的原理解析
字符串操作是C語(yǔ)言編程中非?;A(chǔ)且重要的技能之一。從簡(jiǎn)單的字符串復(fù)制到復(fù)雜的字符串處理,掌握這些操作能夠幫助你編寫出高效、靈活的程序。本文將從常見的字符串函數(shù)(如strcpy、strcat)入手,逐步深入探討字符串操作的核心原理,并引導(dǎo)你實(shí)現(xiàn)自定義字符串處理函數(shù)。
一、字符串操作的基礎(chǔ):strcpy與strcat
1. strcpy:字符串復(fù)制
strcpy是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于復(fù)制字符串的函數(shù)。它的作用是將一個(gè)字符串的內(nèi)容復(fù)制到另一個(gè)字符串中。
語(yǔ)法:
char* strcpy(char* dest, const char* src);
dest:目標(biāo)字符串的首地址。src:源字符串的首地址。- 返回值:指向目標(biāo)字符串的指針。
示例驗(yàn)證:strcpy的基本使用
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等函數(shù)
#include <string.h> // 引入字符串處理庫(kù),提供strcpy等字符串操作函數(shù)
int main() { // 主函數(shù),程序執(zhí)行入口
char src[] = "Hello, World!"; // 定義并初始化源字符串?dāng)?shù)組,數(shù)組長(zhǎng)度由編譯器自動(dòng)計(jì)算(包含結(jié)尾的'\0')
char dest[50]; // 定義目標(biāo)字符數(shù)組,分配50字節(jié)空間確保能容納源字符串內(nèi)容
strcpy(dest, src); // 使用字符串拷貝函數(shù):將src的內(nèi)容(包括結(jié)尾的'\0')復(fù)制到dest數(shù)組中
printf("源字符串: %s\n", src); // 格式化輸出源字符串內(nèi)容,%s對(duì)應(yīng)src數(shù)組首地址
printf("目標(biāo)字符串: %s\n", dest);// 格式化輸出目標(biāo)字符串內(nèi)容,%s對(duì)應(yīng)dest數(shù)組首地址
return 0; // 程序正常退出,返回0給操作系統(tǒng)
} // 主函數(shù)體結(jié)束問(wèn)題驗(yàn)證:
strcpy的作用是什么?- 為什么目標(biāo)字符串的大小需要足夠容納源字符串?
二、strcat:字符串連接
strcat是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于連接字符串的函數(shù)。它的作用是將一個(gè)字符串追加到另一個(gè)字符串的末尾。
語(yǔ)法:
char* strcat(char* dest, const char* src);
dest:目標(biāo)字符串的首地址。src:源字符串的首地址。- 返回值:指向目標(biāo)字符串的指針。
示例驗(yàn)證:strcat的基本使用
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strcat等字符串連接函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char dest[50] = "Hello"; // 定義并初始化目標(biāo)字符數(shù)組,分配50字節(jié)空間,初始內(nèi)容為"Hello"(包含結(jié)尾的'\0')
char src[] = ", World!"; // 定義源字符串?dāng)?shù)組,內(nèi)容為", World!",數(shù)組長(zhǎng)度由編譯器自動(dòng)計(jì)算(包含結(jié)尾的'\0')
strcat(dest, src); // 字符串連接函數(shù):將src的內(nèi)容追加到dest末尾(自動(dòng)覆蓋dest原有的'\0'并在新結(jié)尾添加'\0')
printf("連接后的字符串: %s\n", dest); // 輸出結(jié)果,%s格式符讀取dest數(shù)組內(nèi)容直到遇到'\0'
return 0; // 程序正常結(jié)束,返回0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束問(wèn)題驗(yàn)證:
strcat的作用是什么?- 為什么目標(biāo)字符串必須有足夠的空間來(lái)容納連接后的字符串?
三、字符串比較與查找
1. strcmp:字符串比較
strcmp是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于比較兩個(gè)字符串的函數(shù)。它的作用是比較兩個(gè)字符串的字典順序。
語(yǔ)法:
int strcmp(const char* str1, const char* str2);
str1:第一個(gè)字符串的首地址。str2:第二個(gè)字符串的首地址。- 返回值:
- 如果
str1小于str2,返回負(fù)數(shù)。 - 如果
str1等于str2,返回0。 - 如果
str1大于str2,返回正數(shù)。
示例驗(yàn)證:strcmp的基本使用
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strcmp等字符串比較函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char str1[] = "apple"; // 定義并初始化字符數(shù)組str1,內(nèi)容為"apple"(包含結(jié)尾的'\0',長(zhǎng)度自動(dòng)計(jì)算為6)
char str2[] = "banana"; // 定義并初始化字符數(shù)組str2,內(nèi)容為"banana"(包含結(jié)尾的'\0',長(zhǎng)度自動(dòng)計(jì)算為7)
int result = strcmp(str1, str2); // 調(diào)用字符串比較函數(shù):逐個(gè)字符比較str1和str2的ASCII值
// 返回值規(guī)則:
// - 若str1 < str2 返回負(fù)數(shù)
// - 若str1 == str2 返回0
// - 若str1 > str2 返回正數(shù)
// 根據(jù)比較結(jié)果進(jìn)行分支判斷
if (result < 0) { // 當(dāng)str1字典序小于str2時(shí)
printf("%s 小于 %s\n", str1, str2); // 輸出比較結(jié)果(此處因'a'的ASCII碼小于'b'會(huì)觸發(fā)此分支)
} else if (result == 0) { // 當(dāng)兩個(gè)字符串完全相同時(shí)
printf("%s 等于 %s\n", str1, str2);
} else { // 當(dāng)str1字典序大于str2時(shí)
printf("%s 大于 %s\n", str1, str2);
}
return 0; // 程序正常結(jié)束,返回0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束問(wèn)題驗(yàn)證:
strcmp的作用是什么?- 如何根據(jù)
strcmp的返回值判斷字符串的大???
2. strlen:字符串長(zhǎng)度
strlen是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于獲取字符串長(zhǎng)度的函數(shù)。它的作用是返回字符串的長(zhǎng)度(不包括空終止符'\0')。
語(yǔ)法:
size_t strlen(const char* str);
str:字符串的首地址。- 返回值:字符串的長(zhǎng)度。
示例驗(yàn)證:strlen的基本使用
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strlen等字符串操作函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char str[] = "Hello, World!"; // 定義并初始化字符數(shù)組,內(nèi)容為"Hello, World!",數(shù)組長(zhǎng)度自動(dòng)計(jì)算為14(包含結(jié)尾的'\0')
size_t length = strlen(str); // 調(diào)用字符串長(zhǎng)度計(jì)算函數(shù):返回字符串有效字符數(shù)(不包含結(jié)尾的'\0'),結(jié)果存入無(wú)符號(hào)整型size_t變量
printf("字符串: %s\n", str); // 輸出原始字符串內(nèi)容,%s格式符讀取字符數(shù)組直到遇到'\0'
printf("字符串長(zhǎng)度: %zu\n", length); // 輸出字符串長(zhǎng)度,%zu是size_t類型的專用格式說(shuō)明符
return 0; // 程序正常結(jié)束,返回0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束
/*
代碼特性說(shuō)明:
1. strlen() 計(jì)算的是實(shí)際可見字符數(shù)量("Hello, World!"共13個(gè)有效字符)
2. sizeof(str) 會(huì)返回14(包含結(jié)尾的'\0'),但strlen(str)返回13
3. size_t 是標(biāo)準(zhǔn)庫(kù)專門為表示內(nèi)存/字符串長(zhǎng)度設(shè)計(jì)的無(wú)符號(hào)整型(通常相當(dāng)于unsigned int或unsigned long)
4. 字符數(shù)組初始化時(shí)編譯器自動(dòng)添加'\0',因此不需要手動(dòng)設(shè)置字符串終止符
*/3. strstr:子字符串查找
strstr是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中用于查找子字符串的函數(shù)。它的作用是在一個(gè)字符串中查找另一個(gè)字符串的首次出現(xiàn)位置。
語(yǔ)法:
char* strstr(const char* haystack, const char* needle);
haystack:被查找的字符串的首地址。needle:要查找的子字符串的首地址。- 返回值:
- 如果找到子字符串,返回子字符串的首地址。
- 如果未找到子字符串,返回
NULL。
示例驗(yàn)證:strstr的基本使用
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strstr等字符串查找函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char haystack[] = "Hello, World!"; // 定義并初始化"目標(biāo)字符串"(被搜索的原始字符串),自動(dòng)包含結(jié)尾的'\0'
char needle[] = "World"; // 定義并初始化"待查找子串",自動(dòng)包含結(jié)尾的'\0'
// 使用strstr函數(shù)在haystack中查找needle的首次出現(xiàn)位置
// 返回值:
// - 找到時(shí):返回指向首次匹配位置的指針
// - 未找到時(shí):返回NULL
char* result = strstr(haystack, needle);
if (result != NULL) { // 判斷是否找到子字符串
// 輸出找到的結(jié)果:
// %s 輸出子串內(nèi)容,%p 輸出子串在內(nèi)存中的起始地址(指針值)
printf("子字符串 %s 在 %s 中的起始位置: %p\n", needle, haystack, result);
} else {
// 輸出未找到的提示信息
printf("子字符串 %s 未找到\n", needle);
}
return 0; // 程序正常結(jié)束,返回0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束
/*
代碼特性說(shuō)明:
1. strstr() 執(zhí)行區(qū)分大小寫的搜索,例如"world"將無(wú)法匹配"World"
2. 查找成功時(shí)返回的指針指向目標(biāo)字符串中的匹配位置,可以直接用于偏移計(jì)算:
示例輸出地址對(duì)應(yīng)的實(shí)際偏移量為 7(haystack[7] = 'W')
3. %p 格式符專門用于打印指針地址,實(shí)際輸出格式取決于系統(tǒng)(可能顯示十六進(jìn)制地址)
4. 字符串初始化時(shí)編譯器會(huì)自動(dòng)添加'\0',因此:
- sizeof(haystack) = 14字節(jié)(包含'\0')
- strlen(haystack) = 13字符(不包含'\0')
*/問(wèn)題驗(yàn)證:
strstr的作用是什么?- 如何根據(jù)
strstr的返回值判斷子字符串是否存在?
四、字符串操作的常見問(wèn)題與解決方案
1. 內(nèi)存溢出
在使用strcpy和strcat時(shí),如果目標(biāo)字符串的大小不足以容納源字符串或連接后的字符串,會(huì)導(dǎo)致內(nèi)存溢出。解決方法是確保目標(biāo)字符串有足夠的空間。
示例驗(yàn)證:內(nèi)存溢出的解決方案
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strlen和strcpy等字符串操作函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char src[] = "Hello, World!"; // 定義并初始化源字符數(shù)組,內(nèi)容包含結(jié)尾的'\0',數(shù)組長(zhǎng)度由編譯器自動(dòng)計(jì)算(14字節(jié))
// 動(dòng)態(tài)計(jì)算目標(biāo)數(shù)組長(zhǎng)度:strlen獲取src有效字符數(shù)(13),+1為結(jié)尾的'\0'預(yù)留空間
char dest[strlen(src) + 1]; // 聲明目標(biāo)字符數(shù)組,使用變長(zhǎng)數(shù)組(VLA)特性,總大小為14字節(jié)
strcpy(dest, src); // 執(zhí)行字符串拷貝:將src內(nèi)容(包含結(jié)尾'\0')完整復(fù)制到dest數(shù)組中
printf("源字符串: %s\n", src); // 輸出源字符串內(nèi)容,%s通過(guò)逐字符讀取直到遇到'\0'
printf("目標(biāo)字符串: %s\n", dest); // 輸出目標(biāo)字符串,驗(yàn)證復(fù)制結(jié)果
return 0; // 程序正常退出,返回0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束
/*
關(guān)鍵實(shí)現(xiàn)細(xì)節(jié):
1. strlen(src) 返回值為13(不包含結(jié)尾'\0'),因此dest數(shù)組大小為13+1=14
2. strcpy執(zhí)行時(shí):
- 先復(fù)制'H''e''l''l''o'...等可見字符
- 最后自動(dòng)復(fù)制結(jié)尾的'\0'終止符
3. 目標(biāo)數(shù)組使用棧內(nèi)存分配,VLA特性要求編譯器支持C99及以上標(biāo)準(zhǔn)
4. 此實(shí)現(xiàn)相比固定大小數(shù)組更安全,能自動(dòng)適配不同長(zhǎng)度的源字符串
5. 字符串輸出時(shí)printf通過(guò)首地址指針逐字節(jié)讀取,直到遇到'\0'結(jié)束
*/問(wèn)題驗(yàn)證:
為什么目標(biāo)字符串需要額外的1個(gè)字節(jié)?
如何避免內(nèi)存溢出?
2. 空終止符處理
C語(yǔ)言中的字符串以空終止符'\0'結(jié)束,但在某些情況下,空終止符可能被覆蓋或丟失,導(dǎo)致程序崩潰。解決方法是在字符串操作中始終檢查空終止符。
示例驗(yàn)證:空終止符的處理
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf等格式化輸出功能
#include <string.h> // 引入字符串處理庫(kù),提供strlen、strcpy、strcat等字符串操作函數(shù)
int main() { // 主函數(shù),程序執(zhí)行的入口點(diǎn)
char str1[] = "Hello"; // 定義并初始化第一個(gè)源字符串,包含'\0'終止符,數(shù)組長(zhǎng)度自動(dòng)計(jì)算為6(5字符+1終止符)
char str2[] = "World"; // 定義并初始化第二個(gè)源字符串,包含'\0'終止符,數(shù)組長(zhǎng)度自動(dòng)計(jì)算為6(5字符+1終止符)
/* 動(dòng)態(tài)計(jì)算目標(biāo)數(shù)組大?。?
strlen(str1) = 5 (不包含終止符)
strlen(str2) = 5 (不包含終止符)
+1 為結(jié)果字符串的終止符'\0'預(yù)留空間
總分配空間 = 5 + 5 + 1 = 11 字節(jié) */
char dest[strlen(str1) + strlen(str2) + 1]; // 聲明目標(biāo)字符數(shù)組(使用C99變長(zhǎng)數(shù)組特性)
strcpy(dest, str1); // 第一階段拷貝:將str1內(nèi)容(包含終止符)完整復(fù)制到dest
// 此時(shí)dest內(nèi)容為:['H','e','l','l','o','\0',?,?,?,?,?]
strcat(dest, str2); // 第二階段連接:在dest現(xiàn)有內(nèi)容后追加str2內(nèi)容
// 執(zhí)行過(guò)程:
// 1. 找到dest當(dāng)前的終止符'\0'(索引5)
// 2. 從該位置開始復(fù)制str2內(nèi)容(覆蓋原終止符)
// 3. 追加完成后自動(dòng)添加新終止符
// 最終內(nèi)容:['H','e','l','l','o','W','o','r','l','d','\0']
printf("連接后的字符串: %s\n", dest); // 輸出完整連接結(jié)果,%s格式符讀取直到遇到'\0'
return 0; // 程序正常退出,返回狀態(tài)碼0表示執(zhí)行成功
} // 主函數(shù)體結(jié)束
/*
關(guān)鍵安全說(shuō)明:
1. 目標(biāo)數(shù)組大小計(jì)算策略確保緩沖區(qū)安全:
- strlen返回純字符數(shù)(不含終止符)
- 總需求空間 = str1_len + str2_len + 1(終止符)
- 示例:5(Hello) + 5(World) + 1 = 11字節(jié)
2. 代碼兼容性:
- char dest[...]使用變長(zhǎng)數(shù)組(VLA),需C99及以上標(biāo)準(zhǔn)支持
- 舊編譯器可使用malloc動(dòng)態(tài)分配:
char* dest = malloc((strlen(str1)+strlen(str2)+1)*sizeof(char));
3. strcat工作原理:
- 依賴dest原有的有效終止符定位追加位置
- 若dest未初始化或未正確終止,可能導(dǎo)致緩沖區(qū)溢出
4. 輸出驗(yàn)證:
- 本例將穩(wěn)定輸出"HelloWorld"(無(wú)中間空格,因原始字符串未包含)
- 如需分隔符需手動(dòng)添加,如strcat(dest, " ")后再strcat(dest, str2)
*/問(wèn)題驗(yàn)證:
- 為什么目標(biāo)字符串需要額外的1個(gè)字節(jié)?
- 如何確保字符串以空終止符結(jié)束?
五、自定義字符串處理函數(shù)
通過(guò)學(xué)習(xí)標(biāo)準(zhǔn)庫(kù)中的字符串函數(shù),我們可以進(jìn)一步實(shí)現(xiàn)自定義字符串處理函數(shù)。例如,實(shí)現(xiàn)一個(gè)自定義的strcpy函數(shù)。
示例驗(yàn)證:自定義strcpy函數(shù)
#include <stdio.h> // 引入標(biāo)準(zhǔn)輸入輸出庫(kù),提供printf函數(shù)原型
// 自定義字符串拷貝函數(shù)實(shí)現(xiàn)
char* custom_strcpy(char* dest, const char* src) { // 參數(shù):目標(biāo)字符指針,源常量字符指針(防止修改源)
char* ptr = dest; // 保存目標(biāo)數(shù)組起始地址指針(用于最終返回)
// 循環(huán)復(fù)制源字符串內(nèi)容到目標(biāo)地址
while (*src != '\0') { // 判斷源字符串當(dāng)前字符是否為終止符
*ptr = *src; // 將源字符復(fù)制到目標(biāo)位置
ptr++; // 目標(biāo)指針后移(指向下一個(gè)寫入位置)
src++; // 源指針后移(指向下一個(gè)讀取字符)
}
*ptr = '\0'; // 手動(dòng)添加字符串終止符(完成目標(biāo)字符串的標(biāo)準(zhǔn)化格式)
return dest; // 返回目標(biāo)數(shù)組起始地址(支持鏈?zhǔn)秸{(diào)用)
}
int main() {
// 注意事項(xiàng):此處strlen需要包含string.h,原代碼存在頭文件缺失問(wèn)題
char src[] = "Hello, World!"; // 定義并初始化源字符數(shù)組(自動(dòng)包含'\0'終止符)
char dest[strlen(src) + 1]; // 聲明目標(biāo)字符數(shù)組(使用變長(zhǎng)數(shù)組VLA)
// 數(shù)組大小計(jì)算:源有效字符數(shù) + 終止符 = 13 + 1 = 14
custom_strcpy(dest, src); // 調(diào)用自定義拷貝函數(shù)完成字符串復(fù)制
printf("源字符串: %s\n", src); // 輸出源字符串驗(yàn)證原始數(shù)據(jù)
printf("目標(biāo)字符串: %s\n", dest); // 輸出目標(biāo)字符串驗(yàn)證復(fù)制結(jié)果
return 0; // 程序正常退出,返回狀態(tài)碼0
}
/*
代碼解讀:
1. 關(guān)鍵差異對(duì)比:
- 相比標(biāo)準(zhǔn)庫(kù)的strcpy,這個(gè)實(shí)現(xiàn):
a) 顯式展示底層復(fù)制過(guò)程
b) 需要手動(dòng)處理終止符
c) 不檢查目標(biāo)緩沖區(qū)大?。ù嬖诎踩[患)
2. 潛在問(wèn)題說(shuō)明:
- 主函數(shù)中strlen使用需要#include <string.h>
- 目標(biāo)數(shù)組若小于源長(zhǎng)度會(huì)導(dǎo)致緩沖區(qū)溢出
- 建議添加防御性檢查:
if (sizeof(dest) < strlen(src)+1) { /* 錯(cuò)誤處理 */ }
3. 指針操作細(xì)節(jié):
- src使用const修飾保證函數(shù)內(nèi)不會(huì)修改源字符串
- ptr維護(hù)獨(dú)立的寫位置指針,保留dest原始地址用于返回
- while循環(huán)等價(jià)于:while ((*ptr++ = *src++) != '\0') ;
4. VLA特性說(shuō)明:
- char dest[...] 使用C99變長(zhǎng)數(shù)組特性
- 編譯時(shí)自動(dòng)計(jì)算數(shù)組大?。ㄒ蕾嚠?dāng)前src的內(nèi)容)
- 若需兼容C89標(biāo)準(zhǔn)應(yīng)改為固定大小或動(dòng)態(tài)內(nèi)存分配
*/問(wèn)題驗(yàn)證:
- 自定義
strcpy函數(shù)的實(shí)現(xiàn)原理是什么? - 如何確保自定義字符串處理函數(shù)的正確性?
六、總結(jié)與實(shí)踐建議
字符串操作是C語(yǔ)言編程中非常基礎(chǔ)且重要的技能之一。通過(guò)學(xué)習(xí)strcpy、strcat、strcmp、strlen和strstr等標(biāo)準(zhǔn)庫(kù)函數(shù),你可以實(shí)現(xiàn)各種字符串處理任務(wù)。然而,字符串操作也帶來(lái)了內(nèi)存溢出、空終止符處理等潛在問(wèn)題,需要程序員謹(jǐn)慎處理。
實(shí)踐建議:
- 在使用字符串函數(shù)時(shí),始終確保目標(biāo)字符串有足夠的空間。
- 在編寫自定義字符串處理函數(shù)時(shí),仔細(xì)檢查空終止符的處理。
- 閱讀和分析優(yōu)秀的C語(yǔ)言代碼,學(xué)習(xí)字符串操作的高級(jí)用法。
希望這篇博客能夠幫助你深入理解C語(yǔ)言中的字符串操作,提升編程能力。如果你有任何問(wèn)題或建議,歡迎在評(píng)論區(qū)留言!
到此這篇關(guān)于C語(yǔ)言從strcpy到自定義字符串處理函數(shù)的原理解析的文章就介紹到這了,更多相關(guān)C語(yǔ)言strcpy自定義字符串處理函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法
本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
C++中四種對(duì)象生存期和作用域以及static的用法總結(jié)分析
以下是對(duì)C++中四種對(duì)象生存期和作用域以及static的用法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-09-09
詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員
這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-01-01
C語(yǔ)言中計(jì)算字符串長(zhǎng)度與分割字符串的方法
這篇文章主要介紹了C語(yǔ)言中計(jì)算字符串長(zhǎng)度與分割字符串的方法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
C++實(shí)現(xiàn)LeetCode(132.拆分回文串之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(132.拆分回文串之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

