1. 為什麼都說c語言中的指針很難理解
樓主有這閑心討論這個問題,不如把這些精力放在理解C語言指針上。
講真,懂指針的程序員和不懂指針的程序員,完全是兩個檔次。
2. 需要學指針嗎
必須學啊 c#雖然不用指針 不過類的引用可以說就是對指針功能的一個簡單實例 就是功能上沒C++ C那麼強大了 可是理論還是指針的理論
3. 聽說C語言的指針學起來很難求指教.
你把指針看成一般變數就行了,只不過類型是指針型的,就像整型變數是整型一樣。
一般變數存放的數值,而指針變數存放的是地址,如把存放數值的內存空間看做房間,地址就是門牌號碼,指針變數就是記錄了門牌號的紙條,用指針就能找到房間,從而得到裡面的數值。
所以,你直接用指針變數,得到的是一個地址,前面加一個*就是取這個地址里的值。
另外,和其它變數一樣,指針的值是可以改變的,你可將同類型數據地址賦值給同一個指針變數。
4. 老師說指針以後用不到,這是真得嗎
老師說的是指針的副作用,自己編程,少用指針。
至於說「以後用不到」那是針對未來的計算機語言。其實過去的 ALGOL 語言,FORTRAN 語言等,也都不用指針。
可是現在的C語言,有些地方不得不用指針,例如函數參數,如果要把函數結果通過參數帶回,必須用指針。C語言編程怎麼能不用函數呢,許多常用庫函數就用指針,所以不會指針,就等於不會C語言編程。
5. C語言為什麼那麼難學尤其是指針 據說能繞死人
繞死人的部分一般是出現在考試和演算法研究中,普通應用你自己不會給自己挖大坑的,別人的程序也不會過於復雜。所以,你如果不為應付考試的話,對難的部分先淺嘗一下繞過去,把c大部分都掌握了之後再回頭根據需要提高即可。
其實,指針這部分並不難,需要你勤動手、畫圖,一般都能清楚,因為計算機也是一步一步執行程序的,當自己是計算機,一步一步地記錄和運算,沒有不能解決的問題。
6. 做java程序員是不是可以忽略忘記c的指針,以及底層鏈表樹等數據結構內容。
可以忽略c的指針,但是鏈表數據結構還是不要忽略,java中經常會用到;
7. 初學者學C語言——指針不懂
1、所有字元數組都是指針,字元數組也就是一個字元串
2,4、該定義是一個數組的數組,所以它的頂級數組的某個元素也是指針和字元串
3、字元串(指針)取值,即那個*號,取得的是一個字元,所以它不是字元串
char
s[n][m]定義了n個char*的指針,指向n個字元串,每個字元串有m個字元(n個長度為m的一維數組).
char
s[3][3];定義了3個char*指針(s[0],s[1],s[2]),分別指向一個字元串,字元串長度為3.
s是指針,s==s[0](但*s!=*s[0]),
s[0]指向第一個字元串(s[0]是char*型,所以*s[0]是一個字元),那就選C吧.
數組是指針嗎?
int
a[1][2]={3,4};
printf("%d\n",*0[a]);
//輸出3
8. 為什麼c語言指針那麼難
指針確實難於理解。指針具有兩個身份:
第一,指針本身是一個變數。只要是是變數,它就佔用內存地址。當然如果沒有分配內存地址,不在其內。
第二,指針包含一定的一個內容。指針所特殊的就是,他的內容保存的是其他變數的地址。
以上兩點可以通過書中的示例7-7有比較好的體現。
例如,定義指針變數intp1。 intp1=&a 就表示 intp1保存的信息為a的地址。
而*intp1表示是intp1所保存地址的內存單元所保存的值,實際就是a的值。
所以,你給出的 *intp1=&a; 是一種不太合適寫法。我們可以這樣假設,再給一個變數b。令*intp1=b=&a,則
b=&a,說明b保存的a的地址,這樣b就是一個指針。那*intp1=b,則說明 intp1所保存的地址指向的內存單元為b。所以,intp1可以看成a的指針的指針。
上面這個例子比較繞,慢慢想想,就理解了。
9. 學C++編程突然冒出的兩個問題
第一個問題,在面向對象的語言中,一切以類和對象為基礎,使用指針會造成這種機制的破壞。比如,一個通過get和set方法才能讀取的對象屬性,可以直接通過指針來修改,這就破壞了面向對象的封裝機制。因此,使用C語言可以大量使用指針,但是面向對象語言盡量少用,這也是為什麼在Java里根本就沒有指針的原因。
第二個問題,你這里所說的程序速度不是真正的程序執行速度,而只是體驗速度,和面向過程、面向對象沒有關系,而是和程序的編譯、運行機制有關,比如編譯運行在什麼環境,載入了多少標准庫、外部函數,需要什麼其他的環境基礎執行命令操作等等。Java和C#本身有自己的運行環境,java在虛擬機中,C#在.NET框架中。這些運行環境在啟動程序之前、運行過程中、以及程序結束之後還要做很多工作,比如設備調節、內存管理、垃圾回收等等。所以,在執行小程序的時候這些工作也要做,顯的速度慢,而C程序則非常簡單直接,只執行你的程序代碼而已。
真正的程序速度是指程序的指令速度,通常記為O(x)的形式,俗稱大O表示法,其中的x可以是任何與程序指令數量有關的函數,比如常見的n平方,logn等等。這個速度才是程序真正的速度,是用來提高代碼運行效率的一種計算手段。