欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言大廠面試技巧及strcpy()函數(shù)示例詳解

 更新時間:2021年11月24日 15:13:11   作者:鹿九丸  
這篇文章主要為大家介紹了C語言面試技巧,以strcpy()函數(shù)為示例進行分析詳解,有需要沖刺大廠的朋友們可以借鑒參考下,希望能夠有所幫助

1、什么是優(yōu)秀的代碼?

1. 代碼運行正常

2. bug很少

3. 效率高

4. 可讀性高

5. 可維護性高

6. 注釋清晰

7. 文檔齊全

2、常見的coding技巧有哪些?

1. 使用assert

2. 盡量使用const

3. 養(yǎng)成良好的編碼風格

4. 添加必要的注釋

5. 避免編碼的陷阱。

3、以模擬實現(xiàn)strcpy為例

(1)了解strcpy()函數(shù)

作用:將源字符串里的字符拷貝到目標字符串中去。

注意:字符串的結(jié)束標志'\0'也會拷貝過去。

證明如下:

(2)正片開始(危)

1.第一階段(面試官:最多5分)

#include<stdio.h>
void my_strcpy(char* dest, char* src)
{
	while (*src!='\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;//處理字符串的結(jié)束標志'\0'
	//*dest = '\0';這樣處理并非是不行,但是會給閱讀代碼的造成一種錯覺\
	即這個'\0'是自己放進去的,而不是從源字符串拷貝進去的
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello";
 
   my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

缺點:如果傳的實參是空指針,就會出現(xiàn)問題,因為空指針是無法進行解引用的。

解決方法:使用assert()進行斷言,()里面放的是表達式。使用assert需要引用頭文件<assert.h>。

說明:assert(),括號中的表達式如果不滿足,編譯器就會報錯。

2.第二階段(面試官:最多7分)

#include<stdio.h>
#include<assert.h>
void my_strcpy(char* dest, char* src)
{
	assert(dest != NULL);
	assert(src != NULL);
   //當然,此處也可以將兩個合并成一個:assert( dest && src )
	while (*src!='\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello";
 
   my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

下面是圖片演示,加入傳入一個空指針就會出現(xiàn)下面的報錯。

3.第三階段的代碼:(面試官:最多8分)

#include<stdio.h>
#include<assert.h>
void my_strcpy(char* dest, char* src)
{
	assert( dest && src );
	while(*dest++ = *src++)//'\0'的ascii碼值為0,為假,會退出循環(huán)
	{
		;
	}
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello";
   my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

4.第四階段(面試官:完美代碼!10分!)

通過對比發(fā)現(xiàn),與庫函數(shù)中的函數(shù)還相差一個const,以及返回類型不同。

#include<stdio.h>
#include<assert.h>
char * my_strcpy(char* dest, const char* src)
//const可以防止源字符串被改變
{
	assert( dest && src );
	char* ret = dest;
	while(*dest++ = *src++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello";
 
	printf("%s\n", my_strcpy(arr1, arr2));
	return 0;
}

以上就是C語言面試技巧及strcpy()函數(shù)示例詳解的詳細內(nèi)容,更多關(guān)于C語言面試技巧及strcpy()函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺析C++中dynamic_cast和static_cast實例語法詳解

    淺析C++中dynamic_cast和static_cast實例語法詳解

    這篇文章主要介紹了淺析C++中dynamic_cast和static_cast實例演示,包括static_cast語法知識和static_cast的作用講解,namic_cast 語法詳解,需要的朋友可以參考下
    2021-07-07
  • C++中的函數(shù)你真的理解了嗎

    C++中的函數(shù)你真的理解了嗎

    這篇文章主要為大家詳細介紹了C++中的函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++實現(xiàn)哈夫曼樹簡單創(chuàng)建與遍歷的方法

    C++實現(xiàn)哈夫曼樹簡單創(chuàng)建與遍歷的方法

    這篇文章主要介紹了C++實現(xiàn)哈夫曼樹簡單創(chuàng)建與遍歷的方法,對于C++算法的學習來說不失為一個很好的借鑒實例,需要的朋友可以參考下
    2014-07-07
  • C++如何獲取鼠標點擊位置

    C++如何獲取鼠標點擊位置

    這篇文章主要介紹了C++如何獲取鼠標點擊位置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 淺談C語言中結(jié)構(gòu)體的初始化

    淺談C語言中結(jié)構(gòu)體的初始化

    本篇文章是對C語言中結(jié)構(gòu)體的初始化進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中4種類型轉(zhuǎn)換方式 cast操作詳解

    C++中4種類型轉(zhuǎn)換方式 cast操作詳解

    static_cast,支持子類指針到父類指針的轉(zhuǎn)換,并根據(jù)實際情況調(diào)整指針的值,反過來也支持,但會給出編譯警告,它作用最類似C風格的“強制轉(zhuǎn)換”,一般來說可認為它是安全的
    2013-10-10
  • C語言中的while循環(huán)語句示例詳解

    C語言中的while循環(huán)語句示例詳解

    這篇文章主要介紹了C語言中的while循環(huán)語句,主要包括while循環(huán)的基本信息及常見問題,本文結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-06-06
  • C++ Boost.Range與Adapters庫使用詳解

    C++ Boost.Range與Adapters庫使用詳解

    這篇文章主要介紹了C++ Boost.Range與Adapters庫使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-11-11
  • C++常量指針,指針常量,指向常量的常指針詳解

    C++常量指針,指針常量,指向常量的常指針詳解

    剛接觸到指針時,關(guān)于C++常量指針,指針常量,指向常量的常指針容易混淆,所以整理下,希望能夠幫助自己也幫助到大家
    2021-10-10
  • 淺談C++的淺拷貝出現(xiàn)的錯誤

    淺談C++的淺拷貝出現(xiàn)的錯誤

    下面小編就為大家?guī)硪黄獪\談C++的淺拷貝出現(xiàn)的錯誤。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論