最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)成良好的編碼風(fē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);
   //當(dāng)然,此處也可以將兩個合并成一個: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++?OpenGL實現(xiàn)球形的繪制

    C++?OpenGL實現(xiàn)球形的繪制

    這篇文章主要主要為大家詳細介紹了如何利用C++和OpenGL實現(xiàn)球形的繪制,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-07-07
  • C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題

    C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題

    XML在Json出現(xiàn)前應(yīng)用很廣泛,靈活性好,應(yīng)用語言也沒有限制,發(fā)展了這么長時間后xml標準已經(jīng)很臃腫。這篇文章主要介紹了C++常用函數(shù)之XML JSON格式轉(zhuǎn)換問題,需要的朋友可以參考下
    2020-02-02
  • 淺談C/C++ 語言中的表達式求值

    淺談C/C++ 語言中的表達式求值

    下面小編就為大家?guī)硪黄獪\談C/C++ 語言中的表達式求值。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 淺談C++空間配置器allocator

    淺談C++空間配置器allocator

    在STL中,Memory Allocator處于最底層的位置,為一切的Container提供存儲服務(wù),是一切其他組件的基石。對于一般使用 STL 的用戶而言,Allocator是不可見的。本文將主要介紹C++空間配置器allocator
    2021-06-06
  • C語言計算日期差的方法示例

    C語言計算日期差的方法示例

    這篇文章主要介紹了C語言計算日期差的方法,結(jié)合具體實例形式分析了C語言針對日期轉(zhuǎn)換、運算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • 淺析C/C++變量在內(nèi)存中的分布

    淺析C/C++變量在內(nèi)存中的分布

    變量在內(nèi)存地址的分布為:堆-棧-代碼區(qū)-全局靜態(tài)-常量數(shù)據(jù)。同一區(qū)域的各變量按聲明的順序在內(nèi)存的中依次由低到高分配空間(只有未賦值的全局變量是個例外)
    2013-09-09
  • C++中的友元函數(shù)與友元類詳情

    C++中的友元函數(shù)與友元類詳情

    這篇文章主要介紹了C++中的友元函數(shù)與友元類詳情,對類的封裝是C++三大特性中的一個重要特性,封裝好的數(shù)據(jù)在類的外部是訪問不到的但是一旦出了問題,想要操作被封裝的數(shù)據(jù)怎么辦呢?由此友元函數(shù)友元類誕生了,下文我們來詳細來接一下具體的有緣類吧
    2022-02-02
  • c語言中 基于隨機函數(shù)的使用詳解

    c語言中 基于隨機函數(shù)的使用詳解

    本篇文章對c語言的隨機函數(shù)進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • C語言中send()函數(shù)和sendto()函數(shù)的使用方法

    C語言中send()函數(shù)和sendto()函數(shù)的使用方法

    這篇文章主要介紹了C語言中send()函數(shù)和sendto()函數(shù)的使用方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 基于Qt實現(xiàn)電子木魚小游戲

    基于Qt實現(xiàn)電子木魚小游戲

    今年最火爆的解壓小游戲電子木魚,現(xiàn)在許多軟件都上架了這個小程序。我在網(wǎng)上看了一下基本上都是用py和Java寫的,所以我用QT重新寫了一下,作為小白練手項目非常適合,快跟隨小編一起學(xué)習(xí)一下吧
    2023-01-01

最新評論

商南县| 晋中市| 桃源县| 饶平县| 横峰县| 崇信县| 乌拉特后旗| 沙河市| 宣化县| 靖江市| 泰州市| 德兴市| 西藏| 东莞市| 乐山市| 江津市| 勐海县| 星子县| 大悟县| 恩平市| 石首市| 闽侯县| 哈尔滨市| 德惠市| 南投县| 南充市| 临夏市| 门源| 德兴市| 东乡族自治县| 永清县| 安乡县| 西昌市| 板桥市| 宜阳县| 巴林右旗| 扎兰屯市| 黄浦区| 兴安盟| 尚义县| 儋州市|