1樓:惠基柔子瑜
c的函式引數傳遞規則是傳值,所以無論你對傳入函式的行參如何改變,函式返回,輸入函式的引數原來是什麼就還是什麼,用指標間接訪問,使得引數的傳遞變為傳址,就可以對這個引數進行改變.
大概的意思就是這樣的,當然指標決不只這一點用途,作用太大了,你還是要好好學學的
2樓:佛愜用初珍
c提供了兩種訪問變數的方法。
通過變數名和通過地址。
用指標就是通過地址來引用變數的。
但地址也必須儲存在記憶體中。所以就用指標變數來儲存變數的地址的。
3樓:敬德文麻橋
當指標是一個簡單元素的地址時,當然沒必要向你題中那樣表示,直接把0賦值給a。但是當資料元素不再是簡單型別的,而是結構體,聯合體之類的,那麼指標就大有用處,指標表示的是一個複雜元素的地址,這個地址內可以既有資料,又有下一個元素的地址。或者在鄰接表裡面,一個資料元素的指標更不是那麼簡單
而且用指標訪問陣列特別是二維陣列比較方便。
4樓:茅新蘭遇夏
c裡面函式都只能返回一個值,如果你的函式要返回兩個值,那就要用指標了,把變數地址傳進函式,然後把希望通過函式操作後想要的值存進傳進來的變數地址裡面。當然函式可以返回陣列,結構體,但是你看多了你就知道,沒有人會這麼做的,都返回指標。試想如果我有一個1萬個元素的陣列,你會把它整個地傳進一個函式裡面或者整個地返回出來嗎?
c語言裡面都是傳值的,就是說傳進函式的引數值首先被複制一邊賦值給形式引數,你想想1萬個元素,夠嗆咯!但是有指標就好多了,我們可以把指標(陣列的第一個元素的地址)傳進函式裡面,有了開始地址,函式就知道東西在哪兒,就直接去那兒操作就可以了。單憑這一點,你就可以知道指標的威力,當然你也知道了指標一個很大的用處就是用於函式之間引數的傳遞與返回。
指標就相當於一個**一樣,通過**你知道了你要的東西在哪兒,你去那個地方就可以了,而不是需要把東西整個地板到你面前。
5樓:oo朩朩
指標,說白了就是儲存資料記憶體段的地址。打個比方說,你家的門牌號是306,那麼你家中回來一些客人,這些客人就相當是一些變數,而門牌號就說明了地址,如果張三在你家,另一個人要找到他,那麼此時我們只需要告訴那人306,就相當於你訪問一個變數時,曲線救國,不直接訪問變數的值,而去訪問變數的地址,這會帶來很多方便。由於c語言是一種比較低階的語言,所以包括了許多對硬體操作的部分,直接對記憶體進行操作會帶來很多方便。
6樓:匿名使用者
深入理解c語言指標的奧祕
7樓:塗墨徹粟嬋
好奇怪的問題,指標提供了我們直接對機器記憶體空間的操作的方法,這也是c為什麼被稱為高階語言裡的組合語言的原因。
我們和機器的互動,實際上就是對機器的狀態、控制暫存器讀寫的過程,那麼你說擁有對記憶體空間的直接操作的方法,我們能幹什麼?我們對函式的呼叫,對資料的讀寫,也不過是指令+記憶體空間裡的**或者資料,那麼指標有什麼用?
指標乃c之靈魂,不會用指標的人,沒有必要用c。
8樓:彭珂的課堂
c語言_071_指標的定義和使用_上
c語言中的指標到底有什麼用
9樓:匿名使用者
所有變數值儲存在記憶體中,而每個記憶體都有一個地址,所謂地址就是一個整數編號,如同門牌號碼用於定位(專業術語叫定址),一個地址對應一個位元組(8bit)的記憶體單元。
如今的編譯器,一個整數int型別的值佔用32位bit,也就是4位元組,編譯器將第一個位元組的編號定義為該整數的地址,由於儲存地址的變數就像一個箭頭指向某地址,而稱為指標變數。
int a =10; //定義一個整數變數a,對其賦值10
int *p =&a;//定義一個指標變數p,對其賦值a的記憶體地址,&符號意思為引用跟隨其後的變數地址。
cont <定址->取值
由於指標是一個變數的首個位元組的地址,所以要告訴編譯器被指地址包含連續多少個位元組,因此指標也有型別。比如上面例子中宣告瞭p指標是個整數指標,這樣編譯器知道p指向一個4位元組的記憶體塊。
你可以將指標變數看做一般的整數變數來理解,用來儲存一個整數(地址是個整數),只是,該整數代表著某地址,在這裡是a的地址。
在c/c++中很靈活,但是也很危險,也很難學,如果指標指向錯誤的地址會引起程式崩潰,因此在c#中已經被微軟封裝了,但內部還是有指標的。
如果有必要,c#中也可以使用指標,使用非安全**,在專案生成選項卡中勾選「允許非安全**」,然後就可以使用指標了,不過不建議這麼做。
unsafe
10樓:匿名使用者
指標起的作用是標識一塊記憶體。電腦記憶體上的每一個位元組都具有一個編號,稱為地址(可以簡單理解為指標),任何讀寫記憶體的指令都必須攜帶地址資訊,否則電腦不知道讀寫那塊記憶體。不管你的程式是用什麼語言寫的,要執行資料和**必須駐留記憶體,cpu要執行指令必須有一個「指標」(程式計數器)指向記憶體的**塊,如果某個指令要操作記憶體資料,該指令必須攜帶額外的地址資訊。
c語言的指標讓程式設計師具備直接操作和管理記憶體的能力,這個能力也是c語言適合編寫底層軟體的原因之一。現在拿得出手的作業系統都是用c語言(有時也用c++)和組合語言編寫的。在底層軟體領域c語言是佔統治地位的。
c語言對記憶體的操作都是通過指標來實現的,雖然c語言可以通過變數名訪問記憶體,但是編譯過後變數名被轉換為地址。
其他語言雖然沒有指標或者地址概念,但是訪問記憶體是需要地址的,所以與地址相關的底層操作由該語言的執行時庫承擔了,對程式設計師來說,地址就「不存在了」。
11樓:匿名使用者
c#也有指標,只是它是物件導向的,有著大量的封裝,在c#裡指標(*)變成了引用(ref)、(a->b)變成了(a.b)。指標就是地址,把一個記憶體單元畫成正方體(畫在紙上能可見3個面),上面分別標註:
變數名、地址、值。這就形象多了。
12樓:匿名使用者
能理解為邏輯上順序排列的門牌號?
13樓:看來還真有
c#可以做的,c語言全部都能做。但是c語言能做的,c#未必做的了。
但是c語言做有些東西會很繁瑣,比如圖形介面之類的。
指標指向記憶體地址,意味著c語言可以直接操作計算機的硬體,只要有地址,這也就是c語言適合底層開發的原因。
14樓:匿名使用者
要注意區分變數的指標和指標變數兩個概念。。。
15樓:**的迷茫
指標是一個32位資料,代表一個記憶體地址,這塊記憶體可以放任何東西。就是說指標可以操作任何東西,所以指標很靈活、很強大,但也引入了複雜性。只要理解了指標的原理,再複雜也可以一點一點的分析清楚。
c#的引用跟指標有相似之處,並且可以在unsafe塊裡直接使用指標運算元據。
16樓:匿名使用者
c要是沒指標,那它早淘汰了
17樓:匿名使用者
指標是不是取地址用的啊
18樓:韶正季夏山
指標實際上就是一個記憶體地址,比如一個函式指標,就是一個函式的入口地址,通過這個地址,系統就可以找到這個函式的位置並呼叫它。
c語言指標的作用有哪些?
19樓:嘩嘩嘩嘩
指標的用途非常廣泛,比如如果你想通過函式改變一個變數的值,就得用指標而不能用值傳遞。還有在很多時候變數,特別是物件的資料量實在太大,程式設計師就會用指標來做形參,只需要傳遞一個地址就行,大大提高了效率。簡單地說指標就是指向變數和物件的地址。
基本說明:
1、在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的一個位元組稱為一個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等;
2、為了正確地訪問這些記憶體單元,須為每個記憶體單元編上號。 根據一個記憶體單元的編號即可準確地找到該記憶體單元。既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。
記憶體單元的指標和記憶體單元的內容是兩個不同的概念。
20樓:張簡元芹是群
指標是c語言中廣泛使用的一種資料型別。
運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構;
能很方便地使用陣列和字串;
並能象組合語言一樣處理記憶體地址,從而編出精練而高效的程式。指標極大地豐富了c語言的功能。
學習指標是學習c語言中最重要的一環,
能否正確理解和使用指標是我們是否掌握c語言的一個標誌。同時,
指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。只要作到這些,指標也是不難掌握的。
指標的基本概念
在計算機中,所有的資料都是存放在儲存器中的。
一般把儲存器中的一個位元組稱為一個記憶體單元,
不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,
在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元,
必須為每個記憶體單元編上號。
根據一個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做地址。
既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。
記憶體單元的指標和記憶體單元的內容是兩個不同的概念。
可以用一個通俗的例子來說明它們之間的關係。我們到銀行去存取款時,
銀行工作人員將根據我們的帳號去找我們的存款單,
找到之後在存單上寫入存款、取款的金額。在這裡,帳號就是存單的指標,
存款數是存單的內容。對於一個記憶體單元來說,單元的地址即為指標,
其中存放的資料才是該單元的內容。在c語言中,
允許用一個變數來存放指標,這種變數稱為指標變數。因此,
一個指標變數的值就是某個記憶體單元的地址或稱為某記憶體單元的指標。圖中,設有字元變數c,其內容為「k」(ascii碼為十進位制數
75),c佔用了011a號單元(地址用十六進數表示)。設有指標變數p,內容為011a,
這種情況我們稱為p指向變數c,或說p是指向變數c的指標。
嚴格地說,一個指標是一個地址,
是一個常量。而一個指標變數卻可以被賦予不同的指標值,是變。
但在常把指標變數簡稱為指標。為了避免混淆,我們中約定:「指標」是指地址,
是常量,「指標變數」是指取值為地址的變數。
定義指標的目的是為了通過指標去訪問記憶體單元。
既然指標變數的值是一個地址,
那麼這個地址不僅可以是變數的地址,
也可以是其它資料結構的地址。在一個指標變數中存放一
個陣列或一個函式的首地址有何意義呢?
因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首地址,
也就找到了該陣列或函式。這樣一來,
凡是出現陣列,函式的地方都可以用一個指標變數來表示,
只要該指標變數中賦予陣列或函式的首地址即可。這樣做,
將會使程式的概念十分清楚,程式本身也精練,高效。在c語言中,
一種資料型別或資料結構往往都佔有一組連續的記憶體單元。
用「地址」這個概念並不能很好地描述一種資料型別或資料結構,
而「指標」雖然實際上也是一個地址,但它卻是一個資料結構的首地址,
它是「指向」一個資料結構的,因而概念更為清楚,表示更為明確。
這也是引入「指標」概念的一個重要原因。
c語言中函式指標是什麼 有什麼用 舉個例項
風若遠去何人留 函式指標是指向函式的指標變數。因而 函式指標 本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數 字元型 陣列一樣,這裡是指向函式。函式指標有兩個用途 呼叫函式和做函式的引數。函式指標的宣告方法為 返回值型別 指標變數名 形參列表 如 int func i...
c語言的函式指標舉個例子,c語言中函式指標是什麼 有什麼用 舉個例項
劉文正粉絲 函式指標告訴cpu下一步需要執行 的 的指標,一陣列十分相像.include void function int i,double d 一個函式的宣告 void anotherfunction int i,double d 另外一個函式宣告 int main mxl033 回答是對的。v...
c語言中怎麼用,C語言中 怎麼用
按位與 屬於位操作 一般用在取記憶體中特定位的值 如有 11111111 我要取其中從左起第三位的值,就用它按位與 00001000 關於 位操作的技巧還有很多,你可以去自己搜一下還有一個應用就是用於關係運算中,如 有兩小段程式 sample 1 int main cout sample 2 int...