當前位置:首頁 » 編程語言 » c語言指針哪個難學
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針哪個難學

發布時間: 2022-06-21 15:35:49

❶ 為什麼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的指針的指針。

上面這個例子比較繞,慢慢想想,就理解了。

❷ C語言學到指針這個地方有點困難了,該怎樣學,抓住什麼關鍵點啊。

指針的話確實是C中最難得一塊了,指針的本質是地址,要好好理解這個。一般指針在數組或是鏈表什麼的用的比較多。數組的話可以對比一下用下標和用指針的區別,從而加深理解。當然,編程這個東西我覺得還是應該多練,多上機實踐。

❸ C語言和C++的指針到底有多難

有人說難有人說不難,關鍵你怎麼去理解指針 在我學習的時候就一點兒困難也沒有,反而覺得它非常的好用 學習指針前,你要了解一下內存,知道cpu怎麼得到數據 ,那麼一切就easy了 提示一下 指針當作普通變數理解就可以,只是它所存儲的是一個內存地址 ,然後你結合 * ,& 的效果一看,指針非常的簡單

❹ 在C語言中,到底是指針難 學還是演算法難學

從本質上來說,這應該屬於一個偽命題。這兩樣東西是不應該被放在一起比較的。
指針是被設計來解決具體的問題的,就好象是一件工具,要想生產一輛汽車,你沒有水壓機,用錘子也能敲一輛出來。只不過慢一點而已。
但如果沒有設計圖紙,不了解發動機的工作原理,想要憑小學水平獨立作一輛汽車,基本上不可能。
水壓機就類似於指針,工作原理就類似於演算法。
實際上也是如此,許多語言(例如JAVA)都沒有指針的概念,但也工作的很好。

回到哪個更難的問題。實際上,任何人經過一段時間的訓練後,都要以比較嫻熟的掌握指針的常用用法,並徹底了解指針的概念。但演算法不同,沒人敢說自己對所有演算法都掌握並能熟練運用了。
同樣,在C語言中,對指針本身的研究基本停止了,畢竟這只是一個工具,就象沒人肯研究錘子本身一樣。人們主要研究的還是演算法方法的東西。也就是怎麼把工具用的更好。
所以,演算法難學

❺ c語言指針,下面這題看不懂,求解😭

  1. while (*y++)

    因為++運算符優先順序比*高,所以先對指針y加1,再取出指針y指向的 字元

    如果取出的字元不為0() 就循環

    因為字元串數組 a[]={hello} 是依字元''結尾,字元''的ASCII 碼值 是0

    這樣當指針y 指向''時 就結束循環。

  2. return (y-x-1)

    y x 都是指針,是內存地址,y-x-1 就兩個指針相減再減1 ,返回運算結果。

  3. 從實際執行結果看 返回的是5

    這樣y-x=6

    其實實際循環了5次,但是y 和 x 兩個指針卻相差6

    是因為++的優先順序比*高導致的。

  4. 希望我的回答對你有點幫助,很高興和你一起討論和學習C語言。

    C語言的指針是比較難理解的知識點,需要多練習才能掌握。

❻ C語言最難學的是哪一部分最精髓的又是哪一部分呢

最難學的是數組,函數, 函數參數
函數和函數參數是最精髓的! 一定要學好
指針不算太難,認真點就行

❼ 聽說C語言的指針學起來很難求指教.

你把指針看成一般變數就行了,只不過類型是指針型的,就像整型變數是整型一樣。
一般變數存放的數值,而指針變數存放的是地址,如把存放數值的內存空間看做房間,地址就是門牌號碼,指針變數就是記錄了門牌號的紙條,用指針就能找到房間,從而得到裡面的數值。
所以,你直接用指針變數,得到的是一個地址,前面加一個*就是取這個地址里的值。
另外,和其它變數一樣,指針的值是可以改變的,你可將同類型數據地址賦值給同一個指針變數。

❽ C語言的學習很難嗎

學c語言真的很難嗎?人們對於未知的事物都有一種畏懼的心理,在沒有接觸過C語言的時候總是認為他很難,等自己真正接觸過後才知道原來很容易。

很多人都認為C語言的發展前景不錯,但是都一點畏懼,怕學習不懂,都覺得學習C語言非常難,如果是沒有基礎的情況學習時會更加吃力。那麼C語言到底是不是真的學習比較難呢?

其實C語言是所有編程語言中比較難的編程語言,因為C語言屬於底層語言,可以用來做硬體介面開發,邏輯性也還比較強,另外涉及到比較深的演算法,對學習者有一定數學基礎要求。所以在學習時確實比其他編程語言相對來說難一些。如果你有一定編程基礎,數學底子比較扎實,學習C語言相關來說比較容易。

我建議高中生以及低學歷的同學最好不要學習C語言,因為低學歷學歷能稍微差一些,在加上自學能力沒有高學歷人群強,而且低學歷本身就基礎差,不適合學習C語言,非常你對C語言編程興趣非常濃,能做到除了吃飯睡覺你的生活中就是C語言了,我建議你可以學習C語言,否則你最好不要碰它。

❾ C語言最難學的是什麼

嗯,很佩服lz的自學能力。
譚浩強的c語言的書,很權威,很詳細,很適合自學的。
學習c語言很重要的一點就是學習理論知識與上機訓練結合起來。學完一章後就按課本後面的習題上機練練。這樣穩扎穩打的學起來很好了。又win—tc軟體配合上機訓練不錯。
指針是學習者公認的最難學的。還有指向指針的指針。後面還有結構體和鏈表,裡面都有用到指針的知識。如果指針學得後,那在以後的設計里會相當實用方便。

❿ C語言中指針很難學嗎

一般人覺得指針難學因為在學指針前還沒把表達式和變數的概念搞清楚。
1. 指針變數保存的是內存地址。用指針訪問數據也稱為間接定址。類似於你找一個人,他住在「第一大院」。你直接去找第一大院就是直接定址。如果他的住址只有一個住在「第五大院」的人知道,你去第五大院問出他家在第一大院這就是間接定址。
1.+ 對於上面這種情況,如果我們認為第五大院是「知道他家住址的那個人的住址」,我們就可以進行一連串的間接定址。另一方面也說明指針變數保存的地址也是數據的一種。
2. 指針變數的類型。指針變數的類型目的*僅僅*在於減少編程中可能發生的錯誤。這一點必須明確。根本上說指針變數的類型就是地址。我們為了避免不必要的錯誤強行加上了「只能保存整數的地址」之類的約束。好比住在第五大院的人只會去記中年人的地址。
3. 指針的操作。
3.0 聲明:類型A的指針的類型寫作 類型A* 比如int*。與此同時int*本身也是類型,我們可以寫int**。就是int的指針的指針。
3.1 獲取地址,對於內存變數表達式 &運算符可以獲得其地址,類型是表達是類型的指針。比如對於變數int a。&a獲得的就是類型是int *的a的地址。
3.2 重定向,對於指針變數或者指針變數表達式。*運算符可以獲得其指向地址的變數,類型是原指針的上一級。對於int a; int* p = &a; *p等價於a,類型是int。因為*p是變數,我們可以進行x = *p(取值)和*p = 0(賦值)操作。
3.3 &和*都可以對變數表達式進行操作。比如數組int a[10]。我們可以通過&a[5]獲得a第5個元素的地址。又如int** a。*a是一個int*類型的變數,我們可以進一步地**a獲得類型是int的變數,這就是從第六大院的人口中問出知道A君住址的人在第五大院,然後再去第五大院問出A君住在第一大院的過程。
4. 數組和指針的混合。這個可以說是C/C++語法的bug...
int* a[4] 這個類型可以看成(int*)[4] 元素是int*類型,有4個元素
int (*a)[4] 這個其實是(int[4])* 指向int[4]類型變數的指針。
4.+ 數組變數其實也是指針。int b[4]; 變數b在多數情況下就是一個const int*,指向數組b所佔用的內存,也就是數組b的第一個元素。*b和b[0]是等價的。對於int *a;我們可以直接進行a = b的操作,讓指向數組b。
5. 指針的加法。對於int *a;我們可以進行a + N, a - N的運算。a + 1指向a指向的元素的下一個元素,相應的a - 1指向上一個元素,以此類推。於是*(a + 1)就對a指向的下一個元素進行重定向,等價於數組運算a[1]。
5.+ 對於int *a, *b; a - b獲得的是b到a之間相差多少個元素,類型是int。比如 int x[5]; int *a = &x[0], *b = &x[3]; b - a的結果是3。相應的a - b的結果是-3
這些大體概括了指針的基本內容,可能有疏漏,指針的應用就是指針的基本操作和其他表達式、變數操作的配合。