關於"c語言從鍵盤輸入字串到指標陣列"的問題 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

char* str = (char*)malloc(sizeof(char) * 100); scanf("%s", str);. 這樣我們輸入的字串就會儲存在str所指向的動態空間內。

對指標陣列的賦值參考以上即 ... 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具關於“c語言從鍵盤輸入字串到指標陣列”的問題2018.06.13程式語言c,指標,輸入HOME程式語言關於“c語言從鍵盤輸入字串到指標陣列”的問題Advertisement今天敲了一段程式碼,遇到了從鍵盤輸入多個字串到指標陣列的問題,在程式執行的時候出現了段錯誤的提示。

本文主要涉及到了以下知識:資料的儲存陣列和指標目錄1.1.字串常量的儲存2.2.從鍵盤輸入字串1.字串常量的儲存c語言中字串常量儲存在靜態資料區,並且有字串結束符,直到程式執行結束它才會被銷燬,所以在程式中我們把一個字串常量賦值給一個字元指標,如:char*pChar="HelloWorld!";其中,”HelloWorld!”是一個字串常量,pChar是一個字元指標。

該句相當於將字元’H’在靜態資料區中的地址賦給pChar。

此時,字串常量”HelloWorld!”只有一份儲存在靜態資料區。

另外一種常見的型別是將一個字串常量賦值給一個字元陣列,而其餘上面的指標形式有本質上的區別,如下:charstr[]="HelloWorld!";其中,”HelloWorld!”是一個字串常量,str是一個字元陣列。

此時,程式會將字串常量”HelloWorld!”拷貝一份到棧區(如果str是區域性變數),從此將於字串常量”HelloWorld!”再無聯絡。

2.從鍵盤輸入字串從上面可以看出,我們可以給一個字元指標賦一個字串常量,因為字串常量在記憶體中真實存在且有其地址。

而從鍵盤輸入則不然,我們必須先分配一些空間用來儲存鍵盤輸入的字串,例如:char*str=(char*)malloc(sizeof(char)*100); scanf("%s",str);這樣我們輸入的字串就會儲存在str所指向的動態空間內。

對指標陣列的賦值參考以上即可。

AdvertisementAdvertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章前端下載文件的5種方法的對比2020.02.24全棧面試彙總週刊|第十一期2020.02.24Android自定義控件|小紅點的三種實現(上)2020.02.24從同一功能的八種實現,談談react中的邏輯複用進化過程2020.02.24Flutter完整開發實戰詳解(二十、AndroidPlatformView和鍵盤問題)2020.02.24Flutter混合開發實戰問題記錄(五)1.9.1hotfix打包aar差異2020.02.24刪庫了,我們一定要跑路嗎?2020.02.24http常被問到的知識總結2020.02.24🔥Webpack插件開發如此簡單!2020.02.24從零手寫一套Express的源碼2020.02.24AdvertisementAdvertisement



請為這篇文章評分?