精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

由一道面試題所引出的C語言static變量特性

開發(fā) 后端
當(dāng)時覺得蠻簡單的,這不就是類似字符串逆轉(zhuǎn)嘛,紙上得來終覺淺,絕知此事要躬行,自己嘗試做了一下,發(fā)現(xiàn)還是有一些地方值得注意。今天在此整理一下常見的坑,鞏固下基礎(chǔ)東西。

最近部門在準(zhǔn)備春招筆試題時,有這樣一道題目:用C/C++語言實現(xiàn)一個函數(shù),給定一個int類型的整數(shù),函數(shù)輸出逆序的整數(shù)對應(yīng)的字符串,例如輸入1234,則輸出字符串"4321",,輸入-1234,則輸出字符串"-4321"。題目要求,不使用標(biāo)準(zhǔn)庫,以及不能分配動態(tài)內(nèi)存。當(dāng)時覺得蠻簡單的,這不就是類似字符串逆轉(zhuǎn)嘛,紙上得來終覺淺,絕知此事要躬行,自己嘗試做了一下,發(fā)現(xiàn)還是有一些地方值得注意。今天在此整理一下常見的坑,鞏固下基礎(chǔ)東西。

[[219130]]

版本一

算法思路其實很簡單:使用對10取余和除法操作依次獲取每一位的數(shù)字,然后根據(jù)ASSIC碼轉(zhuǎn)換為字符,將結(jié)果存放在一個char型數(shù)組中,***返回字符串?dāng)?shù)組結(jié)果,如下所示:

  1. #include<stdio.h> 
  2.  
  3. //版本一 
  4. const char * reverseInt(int n) 
  5.     char str[16] = {0}; 
  6.     int temp = n; 
  7.     int i = 0; 
  8.      
  9.     if (n < 0) 
  10.     { 
  11.         temp = -n; 
  12.         str[i++] = '-'
  13.     } 
  14.  
  15.     //當(dāng)temp除到是一位數(shù)的時候退出 
  16.     while (0 != temp / 10)  
  17.     { 
  18.         char ch = temp % 10 + 48; 
  19.         temp = temp / 10; 
  20.         str[i++] = ch; 
  21.     } 
  22.  
  23.     //處理原始數(shù)據(jù)的***位 
  24.     str[i++] = temp % 10 + 48; 
  25.  
  26.     return str; 
  27.  
  28. int main(int argc, char **agrv) 
  29. {     
  30.     int test_data1 = 12345;     
  31.     int test_data2 = 789; 
  32.  
  33.     printf("[test_data1] %d--->%s\n",  
  34.     test_data1, reverseInt(test_data1)); 
  35.  
  36.     printf("[test_data2] %d--->%s\n",  
  37.     test_data2, reverseInt(test_data2));     
  38.     return 0; 

發(fā)現(xiàn)編譯出現(xiàn)了警告,如下:

  1. [root@epc.baidu.com ctest]# gcc -g -o test test.c  
  2. test.c: In function 'reverseInt'
  3. test.c:24:2: warning: function returns address of local variable [-Wreturn-local-addr]   
  4.   return str;  ^ 

從編譯器給出的信息很清楚的說明了問題:返回了一個局部變量的地址,但是我們知道,函數(shù)的局部變量是存在stack中的,當(dāng)這個函數(shù)調(diào)用過程結(jié)束時,這個局部變量都是要釋放掉的,自然就不可再使用了,所以就會產(chǎn)生這樣的warning,這個是和變量的生命周期相關(guān)的。

版本二

對于版本一存在的問題,很自然的會想到有兩種解決方案,***:使用malloc分配動態(tài)內(nèi)存存放結(jié)果,但是題目中明確說明不能不能分配動態(tài)內(nèi)存。因此自然排除掉。第二種方案就是將char result[16]改為static型:static char result[16];對,就是這么一點改動。

  1. #include<stdio.h> 
  2.  
  3. //版本二 
  4. const char * reverseInt(int n) 
  5.     static char str[16] = {0}; 
  6.     int temp = n; 
  7.     int i = 0; 
  8.      
  9.     if (n < 0) 
  10.     { 
  11.         temp = -n; 
  12.         str[i++] = '-'
  13.     } 
  14.  
  15.     //當(dāng)temp除到是一位數(shù)的時候退出 
  16.     while (0 != temp / 10)  
  17.     { 
  18.         char ch = temp % 10 + 48; 
  19.         temp = temp / 10; 
  20.         str[i++] = ch; 
  21.     } 
  22.  
  23.     //處理原始數(shù)據(jù)的***位 
  24.     str[i++] = temp % 10 + 48; 
  25.  
  26.     return str; 
  27.  
  28. int main(int argc, char **agrv) 
  29. {     
  30.     int test_data1 = 12345;     
  31.     int test_data2 = 789; 
  32.  
  33.     printf("[test_data1] %d--->%s\n",  
  34.     test_data1, reverseInt(test_data1)); 
  35.  
  36.     printf("[test_data2] %d--->%s\n",  
  37.     test_data2, reverseInt(test_data2));     
  38.     return 0; 

運行結(jié)果如下:

  1. [root@epc.baidu.com ctest]# ./test                 
  2. [test_data1] 12345--->54321 
  3. [test_data2] 789--->98721 

從運行結(jié)果上看,***個測試數(shù)據(jù)其結(jié)果是正確的,但是第二個輸出結(jié)果確實錯誤的。這是什么原因?先來回一下用static修飾所修飾的局部變量(也稱靜態(tài)局部變量)特點,如下:

1:靜態(tài)局部變量定義時未賦初值,則默認(rèn)初始化為0;

2:靜態(tài)局部變量其作用域為函數(shù)或代碼塊,其生命周期為整個程序的運行期間;注意這兩個概念不要混淆;

3:在一個進(jìn)程的運行期間,靜態(tài)局部變量只會初始化一次,就是***次調(diào)用該靜態(tài)局部變量所在函數(shù)的時候初始化,此后再調(diào)用不會初始化。

好了,到這里,其實問題的原因已經(jīng)很明顯了:在上面程序中,static char str[16] = {0}只會初始化一次,既在執(zhí)行reverseInt(test_data1)時初始化,執(zhí)行完該語句,將結(jié)果存放到str中,此時str中的內(nèi)容為54321,既str[16] = {'5','4','3','2','1','\0'};當(dāng)再次對第二個測試數(shù)進(jìn)行轉(zhuǎn)換調(diào)用reverseInt(test_data2)時,str仍然是上次的結(jié)果{'5','4','3','2','1','\0'},因此在轉(zhuǎn)換后為98721。

版本三

那么如何解決版本二的問題了,一個很簡單的辦法就是在reverseInt函數(shù)中對static變量str每次使用for循環(huán)進(jìn)行初始化,如下,鑒于篇幅,就不將main函數(shù)也貼出來了:

  1. const char * reverseInt(int n) 
  2.     static char str[16] = {0}; 
  3.     int temp = n; 
  4.     int i = 0; 
  5.     int j = 0; 
  6.  
  7.     for (; j < 16; j++)  
  8.     { 
  9.         str[j] = '\0'
  10.     } 
  11.  
  12.     if (n < 0) 
  13.     { 
  14.         temp = -n; 
  15.         str[i++] = '-'
  16.     } 
  17.  
  18.     //當(dāng)temp除到是一位數(shù)的時候退出 
  19.     while (0 != temp / 10)  
  20.     { 
  21.         char ch = temp % 10 + 48; 
  22.         temp = temp / 10; 
  23.         str[i++] = ch; 
  24.     } 
  25.  
  26.     //處理原始數(shù)據(jù)的***位 
  27.     str[i++] = temp % 10 + 48; 
  28.  
  29.     return str; 

運行,能得到我們期望的結(jié)果了:

  1. [root@epc.baidu.com ctest]# ./test                 
  2. [test_data1] 12345--->54321 
  3. [test_data2] 789--->987 

其實,版本三還有很多細(xì)節(jié)需要考慮的,比如:當(dāng)輸入的整數(shù)超過int的范圍如何處理等等,雖然是小細(xì)節(jié),但卻十分重要,大家有興趣可以思考下練練手。

責(zé)任編輯:武曉燕 來源: 碼農(nóng)有道
相關(guān)推薦

2009-08-11 14:59:57

一道面試題C#算法

2009-08-11 10:12:07

C#算法

2024-10-11 17:09:27

2009-08-11 15:09:44

一道面試題C#算法

2018-03-06 15:30:47

Java面試題

2011-05-23 11:27:32

面試題面試java

2023-02-04 18:24:10

SeataJava業(yè)務(wù)

2022-04-08 07:52:17

CSS面試題HTML

2017-11-21 12:15:27

數(shù)據(jù)庫面試題SQL

2023-08-01 08:10:46

內(nèi)存緩存

2013-05-29 10:36:08

Android開發(fā)移動開發(fā)字符串反轉(zhuǎn)

2021-05-31 07:55:44

smartRepeatJavaScript函數(shù)

2021-10-28 11:40:58

回文鏈表面試題數(shù)據(jù)結(jié)構(gòu)

2022-02-08 18:09:20

JS引擎解析器

2021-03-16 05:44:26

JVM面試題運行時數(shù)據(jù)

2011-03-02 10:58:16

SQL server入門面試題

2015-09-02 14:09:19

面試題程序設(shè)計

2017-03-10 09:33:16

JavaScript類型

2017-09-13 07:15:10

Python讀寫文件函數(shù)

2021-03-27 10:59:45

JavaScript開發(fā)代碼
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲国产精品悠悠久久琪琪| 国产精品美女久久久久久久久久久| 欧美激情在线观看视频| 黄色录像a级片| 超碰这里只有精品| 一区二区不卡在线播放| 久久人人九九| 国产乱码久久久| 国产模特精品视频久久久久| 日韩在线中文字幕| 亚洲制服丝袜在线播放| 全球中文成人在线| 午夜视频久久久久久| 亚洲视频欧美在线| 天堂中文在线资| 国产在线视频一区二区三区| 97在线视频国产| 永久免费看片直接| 久久影院资源站| 5566中文字幕一区二区电影| 成年人视频网站免费观看| 黄色网页在线播放| 久久精品综合网| 国产伦精品一区二区三区照片| 91禁在线观看| 丝袜亚洲另类欧美| 97精品国产91久久久久久| 国内毛片毛片毛片毛片毛片| 免费黄色成人| 亚洲第一中文字幕在线观看| 天天色天天综合网| jizzyou欧美16| 欧美性猛xxx| 日本一区午夜艳熟免费| av片在线观看网站| 国产精品理论在线观看| 日本公妇乱淫免费视频一区三区| 香蕉av一区二区三区| 国产98色在线|日韩| 成人一区二区电影| 在线观看视频二区| 久久一区二区三区超碰国产精品| 欧美激情啊啊啊| 国产极品国产极品| 中文字幕一区二区av | 超碰在线公开97| 97se综合| 色综合天天天天做夜夜夜夜做| 国产玉足脚交久久欧美| 美女精品导航| 亚洲五码中文字幕| 东北少妇不带套对白| 久久亚洲资源| 亚洲成人777| 黄色www网站| 91丝袜在线| 精品久久久一区| www.亚洲天堂网| 日韩不卡免费高清视频| 91福利视频在线| 成人亚洲视频在线观看| 婷婷午夜社区一区| 欧美系列日韩一区| 九九九九九国产| 国产精品日本一区二区三区在线 | 狠狠入ady亚洲精品经典电影| 欧美猛男性生活免费| 九九热只有精品| 亚洲激情二区| 国产国语刺激对白av不卡| 综合久久中文字幕| 韩国成人精品a∨在线观看| 91亚洲精品视频| 日本美女一级片| 久久综合色播五月| 杨幂一区欧美专区| 影音先锋男人在线资源| 亚洲一区二区精品3399| 成人午夜视频在线观看免费| 中文字幕资源网在线观看免费| 日本韩国欧美国产| 国产免费中文字幕| 牛牛精品成人免费视频| 中日韩美女免费视频网站在线观看 | www.豆豆成人网.com| 日韩精品一区二区三区第95| 日本高清www| 希岛爱理一区二区三区| 国内精品一区二区三区四区| 男人天堂视频网| 国产一区二区三区高清播放| 精品一区二区国产| 日本中文字幕在线2020| 亚洲高清一区二区三区| 色七七在线观看| 亚洲超碰在线观看| 亚洲欧美在线一区二区| 午夜激情福利网| 亚洲欧美成人| 91久久大香伊蕉在人线| 亚洲色图欧美视频| 亚洲免费在线视频一区 二区| 国产欧美在线一区| 嫩呦国产一区二区三区av| 日韩久久免费电影| 极品魔鬼身材女神啪啪精品| 久久一区中文字幕| 成人在线看片| 毛片在线看网站| 欧美性videos高清精品| 午夜免费视频网站| 超碰成人久久| 91精品国产91久久久久久| 一区二区三区精彩视频| 久久免费看少妇高潮| 日韩专区第三页| 欧美黄色网络| 这里只有精品在线观看| 黄网在线观看视频| 国产suv精品一区二区883| 亚洲精品影院| 欧美xo影院| 亚洲精品白浆高清久久久久久| 日本精品在线免费观看| 日本不卡中文字幕| 欧美在线一区二区三区四区| 爱啪视频在线观看视频免费| 日韩一区二区免费视频| 一区二区三区在线播放视频| 日韩av一二三| 日本10禁啪啪无遮挡免费一区二区| 黄色在线网站噜噜噜| 精品粉嫩超白一线天av| 在线免费观看亚洲视频| 精品无人码麻豆乱码1区2区 | 欧美一区二区在线看| 中文天堂资源在线| 日韩精品电影在线观看| 麻豆一区区三区四区产品精品蜜桃| 毛片网站在线看| 日韩视频免费观看高清完整版在线观看| 91麻豆精品久久毛片一级| 日韩经典中文字幕一区| 日本婷婷久久久久久久久一区二区| 1区2区3区在线| 亚洲国产另类久久精品| 国产成人在线免费观看视频| 国产高清亚洲一区| 日本久久久网站| 精品精品国产毛片在线看 | 欧美日韩尤物久久| 正在播放亚洲1区| 一区二区三区精彩视频| 亚洲欧美一区二区久久| xxxx国产视频| 在线不卡视频| 精品欧美一区二区久久久伦 | 伊人蜜桃色噜噜激情综合| 91免费观看| sm捆绑调教国产免费网站在线观看| 欧美一卡二卡三卡| 久热精品在线观看| 91小视频在线免费看| 丰满人妻中伦妇伦精品app| 综合国产视频| 国产美女精品视频| 日本性爱视频在线观看| 亚洲国产精品久久久久| 日本在线播放视频| 国产精品美女视频| 国产sm在线观看| 久久狠狠婷婷| 这里只有精品66| 国内精品国产成人国产三级粉色| 久久久久久久久久久免费| 日韩av成人| 欧美日韩中文另类| 欧美成欧美va| 久久综合狠狠综合久久激情| 15—17女人毛片| 国产精品99一区二区| 欧美日韩精品免费看| 黄色精品视频网站| 久久免费成人精品视频| 性xxxx视频| 欧美疯狂性受xxxxx喷水图片| 久草免费在线观看视频| 久久久久久久久久久久久女国产乱 | 国产美女网站视频| 国产999精品久久久久久绿帽| 精品中文字幕av| 亚洲a在线视频| 久久精品日产第一区二区三区乱码 | 午夜在线播放视频欧美| 一区二区av| 校园春色另类视频| 91精品视频在线免费观看| jizzjizz中国精品麻豆| 日日骚av一区| 四虎成人免费在线| 欧美日韩一卡二卡| 日韩毛片在线视频| 亚洲视频一区在线观看| 成人免费看aa片| 国产成人av资源| 中文字幕第80页| 在线亚洲观看| 欧美黄色免费网址| 久久人人88| 免费国产一区二区| 51vv免费精品视频一区二区| 国产剧情日韩欧美| 午夜影院一区| 久久久视频免费观看| 黄色在线观看网站| 一区二区亚洲精品国产| 欧美精品a∨在线观看不卡| 日韩三级中文字幕| 又污又黄的网站| 色中色一区二区| 日韩三级视频在线播放| 一区二区高清视频在线观看| 99自拍视频在线| 国产精品美女久久久久久2018| 性欧美丰满熟妇xxxx性仙踪林| 国产成人一区在线| 在线观看免费视频污| 日本aⅴ免费视频一区二区三区| 青青草国产精品视频| 欧美激情1区2区| 国产对白在线播放| 97视频精品| 影音欧美亚洲| 欧美激情国产在线| 杨幂一区欧美专区| 日本一区二区免费高清| 欧美三日本三级少妇三99| 在线成人动漫av| 欧美精品二区三区四区免费看视频| 大香伊人久久精品一区二区| 91在线国产电影| 精品视频在线播放一区二区三区 | 91精品国产91久久综合| 在线一区高清| 欧美 日韩 国产一区二区在线视频| 中文字幕中文字幕99| 五月开心六月丁香综合色啪| 在线天堂一区av电影| 91亚洲成人| 99热都是精品| 国产综合视频| 黄色成人在线看| 国产精品普通话对白| av观看免费在线| 老司机精品导航| 老司机午夜av| 麻豆成人综合网| 永久看看免费大片| www.欧美日韩| 四虎影成人精品a片| 国产拍欧美日韩视频二区| 制服丨自拍丨欧美丨动漫丨| 亚洲色图视频网| 久久久精品视频在线| 亚洲高清中文字幕| 免费的毛片视频| 欧美精品1区2区| 亚洲精品成av人片天堂无码| 欧美精品一区二区三区蜜臀| 日本不卡免费播放| 中文日韩电影网站| fc2ppv国产精品久久| 国内精品视频在线| 日韩一区二区三区免费| 成人福利在线视频| 国产一区二区在线视频你懂的| 日本高清不卡一区二区三| 国产国产精品| av免费观看大全| 蜜臀久久99精品久久久画质超高清 | 国产一二三在线视频| 丝袜亚洲另类丝袜在线| 宇都宫紫苑在线播放| proumb性欧美在线观看| 人人爽人人爽人人片| 一区二区三区在线看| 一级黄色在线视频| 欧美一区二区三区男人的天堂| 污视频网站免费观看| 综合136福利视频在线| av在线不卡免费| 国产狼人综合免费视频| 精品国产导航| 91手机视频在线| 性色一区二区三区| 欧美日韩理论片| 国产色婷婷亚洲99精品小说| 91在线播放观看| 欧美一a一片一级一片| 全部免费毛片在线播放一个| 正在播放亚洲1区| 天堂电影一区| 国产成人精品自拍| 日韩中文欧美| 国产熟女高潮视频| 国产成人av一区二区三区在线观看| 中文字幕第24页| 五月天激情综合| 国产xxxxxx| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美极品xxxx| 亚洲伦理一区二区| 日韩偷拍一区二区| 香蕉成人久久| 野战少妇38p| 一区二区成人在线观看| 真实的国产乱xxxx在线91| 日韩av在线最新| 91九色国产在线播放| 91免费高清视频| 日韩在线观看| 亚洲一区在线不卡| 国产亚洲成年网址在线观看| 国产精品免费av一区二区| 欧美一级日韩不卡播放免费| 在线观看av黄网站永久| 国产91在线高潮白浆在线观看| 美腿丝袜亚洲图片| 欧美大黑帍在线播放| 国产不卡在线播放| 久热这里有精品| 欧美一级日韩不卡播放免费| 免费看a在线观看| 91精品国产综合久久香蕉| 成人三级视频| 欧美男女交配视频| 在线观看av大片| 永久免费毛片在线播放不卡| 欧美专区福利免费| 免费h精品视频在线播放| 国产深夜精品| 一区二区三区免费在线观看视频| 亚洲第一av色| 日本xxxx人| 26uuu亚洲伊人春色| 色哟哟精品丝袜一区二区| 日韩欧美一区三区| 久久亚区不卡日本| 日韩黄色片网站| 中文字幕日韩av| 91视频成人| 成年人视频网站免费| 成人少妇影院yyyy| 香蕉免费毛片视频| 日韩精品中文字幕在线观看| 成人国产二区| 亚洲激情一区二区三区| 久久精品国产**网站演员| 欧美一区免费观看| 精品国产91洋老外米糕| 精品三级久久| 麻豆蜜桃91| 激情丁香综合五月| 精品无码av在线| 亚洲全黄一级网站| 国产资源一区| 国产激情片在线观看| 成人永久看片免费视频天堂| 在线观看亚洲欧美| 伊人久久久久久久久久久| av一级久久| 成人在线观看你懂的| 久久精品一二三| 国产sm主人调教女m视频| 久久久亚洲国产天美传媒修理工| 亚洲精品**不卡在线播he| 久久99999| 亚洲国产三级在线| 黄视频在线播放| 亚洲最大的av网站| 欧美综合二区| 国产尤物在线播放| 精品亚洲一区二区| 欧洲美女精品免费观看视频| 欧洲精品一区二区三区久久| 国产亚洲一区二区三区| 国产欧美日韩成人| 欧美一级电影免费在线观看| 91综合网人人| aa片在线观看视频在线播放| 欧美日韩成人一区二区| aaa在线播放视频| 中文字幕99| 91视频国产观看| www.国产黄色| 国产精品九九九| 一区二区三区福利| 成人免费毛片xxx| 伊人久久久久久久久久| 韩国女主播一区二区三区|