既然指標變數是存放位址的,然而正常使用是不會去糾結位址,那麼為什麼要指標變數???其實指標變數前加上*號就代表位址上的值,那為何不直接用變數而是用指標變數然後再指向變數呢??這就要提到指標的好處了:a.為函式提供修改呼叫變元的靈活手段;b.支援c 動態分配子程式c.可以改善某些子程式的效率》在資料傳遞時,如果資料塊較大(比如說資料緩衝區或比較大的結構),這時就可以使用指標傳遞位址而不是實際資料,即提高傳輸速度,又節省大量記憶體。d.為動態資料結構(如二叉樹、鍊錶)提供支援(好處摘自luckyone906的部落格)。
指標的定義:
型別 *變數名
其中號必不可少,如果沒有就是一般的變數;變數名的選擇建議如果指向之前定義的變數可以在之前的變數名前加p作為那個變數的指標變數。
int *pnum;
pnum=#
如果時指向變數陣列,則直接賦值,如:
int num[10];
int *pnum;
pnum=num;
此時指標pnum是num[0]的位址
指標做迴圈變數的做法:
指標做迴圈變數時可以定義另乙個來迴圈,這樣原指標的位址就不變,在一些情景也可以直接作為迴圈變數
pta指標6-6 查詢子串中我就將指標用於迴圈變數。
pta指標6-8 計算最長的字串長度的題幹。
題集2019-c10-指標
**量352
定義最小min
定義最大max並賦值為n-1
定義中間數mid
定義整型變數用於判斷是否找到
while迴圈
令mid等於中間值
if判斷等於則將count累加並將mid賦值給loc並退出
if判斷大於並將最小min移動到mid右方並將count累加
if判斷小於並將最大max移動到mid左方並將count累加
錯誤點我的解決思路
部分正確
loc沒有賦初值,導致第三個測試點:找不到 沒過
答案正確
重新審視題目後,將loc的賦值賦了初值-1,答案正確
定義乙個二維陣列mon儲存月份的英文名
函式名
定義指標變數month
對指標變數進行賦初值null為空指標,從而達到不符合也能夠一次輸出的目的
if判斷是否是1-12月,如果不是將month返回,即返回空指標
如果沒返回空指標則代表屬於1-12月,將1-12月的陣列的首位址賦值給month
返回month
錯誤點我的解決思路
部分正確
我用了二維陣列,但定義在函式內,所有測試點就達成了後三個測試點
編譯錯誤
我想著能否用指標陣列,但卻搞了個自己發明的指標二維陣列*mon[12][10]
答案正確
這次不敢直接在pta提交,經過多次定義,試著將mon定義在函式外,發現這是個全域性變數,並且答對了題目
定義長度為82的字元陣列ch
定義字元op用來儲存要查詢的字元
定義判斷的變數flag並賦初值0
定義下標的變數index用於儲存找到的下標
定義迴圈變數i
從鍵盤抓取要查詢的字元op
getchar盛放回車符,防止對下乙個變數的獲取產生影響
fgets獲得字串
while迴圈
if判斷是否找到,如果找到改變flag的值
對迴圈變數i進行累加
end while
if對flag進行判斷輸出的值
錯誤點我的解決思路
部分正確
第一遍在vs測試將題目給的測試點達成後就提交到pta,發現我的是最小下標,在if判斷是找到我就直接break退出了
部分正確
在對上一次提交進行了修改後任然沒有解決那個問題
答案正確
我多次修改多次除錯後終於正確了(忘了當時怎麼改的了)
我選擇閱讀的是力扣裡面的一題報數:
我看的是一位名叫全網最秀的**,因為看他介紹時說用遞迴吸引了我,畢竟剛學的遞迴:
由於能力限制只能截到這麼多,最後一行時返回值就不截圖了。
C部落格作業05 2019 指標
1.1.1,指標定義 int p float p char p 直接對位址進行操作 指標被定義後,需先賦值後使用 指標賦初值時,只能賦給相同型別的指標 不能用數值賦初值,但可以初始化為0,即null 輸出時可以用printf s len,p len表示輸出長度,p表示需要輸出的位址 1.1.2,指標...
C部落格作業05 指標
展示關於 指標題目集 分數截圖。每個知識點具體展開介紹。包括指標如何指向字串 字串相關函式及函式 原型的理解 字串相關函式用法 擴充套件課堂未介紹內容 具體格式是什麼,注意事項。為什麼要動態記憶體分配,堆區和棧區區別。動態記憶體分配相關函式及用法。舉例為多個字串做動態記憶體要如何分配。多個字串用二維...
C部落格作業05 指標
格式 datatype name value 定義格式 int p 定義,定義時必須帶 float p1 a char p2 c p1 b p2 d 賦值,在定義的同時賦值需要帶,單獨賦值時不能帶,因為p代表指標變數的值,即位址。p代表指標指標變數指向的變數的值。乙個函式在編譯時被分派乙個入口位址,...