-
示例,在課堂上提問,哈哈。
-
while (*y++)
由於 ++ 運算子的優先順序高於 *,因此請先在指標 y 上加 1,然後取出指標 y 指向的字元。
如果字元不是 0 (0),則將迴圈。
因為字串陣列 a= 是按字元排列的'\0'結局,人物'\0'ASCII 程式碼值為 0
這是指標 y 指向'\0'結束迴圈。
return (y-x-1)
y x 是乙個指標,它是乙個記憶體位址,y-x-1 通過從兩個指標中減去和減去 1 來返回運算的結果。
從實際執行結果來看,返回5
所以 y-x=6
實際上,它實際上被迴圈了 5 次,但兩個指標 y 和 x 之間的差值是 6,因為 ++ 的優先順序高於 *。
希望我的對您有所幫助,很高興與您討論和學習 C 語言。
C語言的指標相對難以理解,需要大量的練習才能掌握。
-
首先,A中的商店是這樣的。
while(*y++)
此指標遍歷整個字串陣列,直到'\0'End,在 more ++ 的末尾,所以在 -1 之後。
return(y-x-1);
-
C 函式中的指標。 在這種情況下,你可以暫時理解 main 函式中傳遞的引數是特定的,並且在你編寫的函式中已經修改過了,所以 main 函式也是得到的資料中修改過的資料。 如果不把指標拿走,就好比兩個孩子抄作業,無論孩子抄作業如何,作業內容都是一樣的。
但只要有指標,就好像別人抄了他的作業,直接寫在了作業本上。 抄作業的學生沒有自己的作業本,而是用了別人的作業本。 我可以這麼說嗎?
似乎不清楚,但如果你有任何其他問題,你可以繼續問。
-
*y 是指標,所以 while(*y++) 是骨架。
returen() 是函式的返回值,表示您建立的 fun() 的值等於執行後的返回值。
一般來說,它是乙個計算長度的程式,你可以找出回報(y-x-1)中的-1是如何來的。
-
指標在使用前應初始化,如果進行分配空間的操作,則其指向的空間會在呼叫完成後釋放(避免記憶體洩漏),同時應給指標賦值為空值(此賦值操作讀為指向,後者讀為p指向空) p = null(避免懸空指標),防止字段指標和喜歡。使用指標作為引數時,重要的是要知道您在函式的正文部分修改的值是指標的值還是指標指向的值,兩者之間有很大的區別,這取決於您的需求。 如果我們只修改被穿透的指標的值,並且引數的值沒有變化,那麼我們就可以使用指向指標的指標來完成引數 **p 的更改; 如果是 C++,您也可以為此目的使用 *& 指標引用,但 C++ 方法的成本要低得多。
-
注意:有兩種方法可以初始化指標變數:int a, *p=a; 和 int *p,a; p=&a;
注意&和*的區別是位址運算子,*是值運算子 定義指標變數p後,p單獨表示取指標,*p表示取內容。
這些東西必須小心使用,而且它們非常容易出錯。
-
在選項 b 中的位址上加 5 不僅僅是乙個數字加 5。
例如,在 32 位計算機上(指標為 4 個位元組),p1 + = 5 實際上將 4 * 5 = 20 新增到該位址編號
c、p1、p2 是 char*,但 &p2 是 char**,因此 c 的賦值型別不正確。
B是對的。
-
b:P1 和 P2 是字元指標變數,根據所引用單元的變數型別的長度自動加減。
C:&P2-- 是乙個 char 變數,分配給指標變數 p1,因為兩邊是不同型別的,一定是錯的。
D:指標變數的乘法應該是木製的。
這個問題本身有問題。
結果沒有初始化,沒有指向任何空格就傳遞給add函式,這本身就是錯誤的,當然也可以實現,在add函式中申請乙個位址來儲存結果,並將位址發回給結果,但是該位址的**是無法控制的, 容易造成記憶體洩漏。 >>>More
<>在這個程式中,我們首先提示使用者輸入正方形的尺寸,然後輸入正方形的元素。 接下來,我們通過遍歷正方形的每一行並使用指標指向每行相應列中的元素來找到正方形矩陣的對角線元素的總和。 最後,我們輸出結果。 >>>More