c語言指標的概念,論述C語言中指標的概念和作用,並舉例說明

時間 2021-08-30 09:32:14

1樓:匿名使用者

指標是c語言中廣泛使用的一種資料型別。 運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構; 能很方便地使用陣列和字串; 並能象組合語言一樣處理記憶體地址,從而編出精練而高效的程式。

指標極大地豐富了c語言的功能。 學習指標是學習c語言中最重要的一環, 能否正確理解和使用指標是我們是否掌握c語言的一個標誌。同時, 指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。

只要作到這些,指標也是不難掌握的。

指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的一個位元組稱為一個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元, 必須為每個記憶體單元編上號。

根據一個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做地址。 既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。

記憶體單元的指標和記憶體單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關係。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。

在這裡,帳號就是存單的指標, 存款數是存單的內容。對於一個記憶體單元來說,單元的地址即為指標, 其中存放的資料才是該單元的內容。在c語言中, 允許用一個變數來存放指標,這種變數稱為指標變數。

因此, 一個指標變數的值就是某個記憶體單元的地址或稱為某記憶體單元的指標。圖中,設有字元變數c,其內容為「k」(ascii碼為十進位制數 75),c佔用了011a號單元(地址用十六進數表示)。設有指標變數p,內容為011a, 這種情況我們稱為p指向變數c,或說p是指向變數c的指標。

嚴格地說,一個指標是一個地址, 是一個常量。而一個指標變數卻可以被賦予不同的指標值,是變。 但在常把指標變數簡稱為指標。

為了避免混淆,我們中約定:「指標」是指地址, 是常量,「指標變數」是指取值為地址的變數。 定義指標的目的是為了通過指標去訪問記憶體單元。

既然指標變數的值是一個地址, 那麼這個地址不僅可以是變數的地址, 也可以是其它資料結構的地址。在一個指標變數中存放一

個陣列或一個函式的首地址有何意義呢? 因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首地址, 也就找到了該陣列或函式。

這樣一來, 凡是出現陣列,函式的地方都可以用一個指標變數來表示, 只要該指標變數中賦予陣列或函式的首地址即可。這樣做, 將會使程式的概念十分清楚,程式本身也精練,高效。在c語言中, 一種資料型別或資料結構往往都佔有一組連續的記憶體單元。

用「地址」這個概念並不能很好地描述一種資料型別或資料結構, 而「指標」雖然實際上也是一個地址,但它卻是一個資料結構的首地址, 它是「指向」一個資料結構的,因而概念更為清楚,表示更為明確。 這也是引入「指標」概念的一個重要原因。

2樓:匿名使用者

開闢一個地址空間

空間中的內容記錄的是

另一個地址

對他指向的資料進行操作

和直接對變數操作是一個意思

論述c語言中指標的概念和作用,並舉例說明

3樓:申恆酈英縱

指標是c語言中廣泛使用的一種資料型別。

運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構;

能很方便地使用陣列和字串;

並能象組合語言一樣處理記憶體地址,從而編出精練而高效的程式。指標極大地豐富了c語言的功能。

學習指標是學習c語言中最重要的一環,

能否正確理解和使用指標是我們是否掌握c語言的一個標誌。同時,

指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。只要作到這些,指標也是不難掌握的。

指標的基本概念

在計算機中,所有的資料都是存放在儲存器中的。

一般把儲存器中的一個位元組稱為一個記憶體單元,

不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,

在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元,

必須為每個記憶體單元編上號。

根據一個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做地址。

既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。

記憶體單元的指標和記憶體單元的內容是兩個不同的概念。

可以用一個通俗的例子來說明它們之間的關係。我們到銀行去存取款時,

銀行工作人員將根據我們的帳號去找我們的存款單,

找到之後在存單上寫入存款、取款的金額。在這裡,帳號就是存單的指標,

存款數是存單的內容。對於一個記憶體單元來說,單元的地址即為指標,

其中存放的資料才是該單元的內容。在c語言中,

允許用一個變數來存放指標,這種變數稱為指標變數。因此,

一個指標變數的值就是某個記憶體單元的地址或稱為某記憶體單元的指標。圖中,設有字元變數c,其內容為「k」(ascii碼為十進位制數

75),c佔用了011a號單元(地址用十六進數表示)。設有指標變數p,內容為011a,

這種情況我們稱為p指向變數c,或說p是指向變數c的指標。

嚴格地說,一個指標是一個地址,

是一個常量。而一個指標變數卻可以被賦予不同的指標值,是變。

但在常把指標變數簡稱為指標。為了避免混淆,我們中約定:「指標」是指地址,

是常量,「指標變數」是指取值為地址的變數。

定義指標的目的是為了通過指標去訪問記憶體單元。

既然指標變數的值是一個地址,

那麼這個地址不僅可以是變數的地址,

也可以是其它資料結構的地址。在一個指標變數中存放一

個陣列或一個函式的首地址有何意義呢?

因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首地址,

也就找到了該陣列或函式。這樣一來,

凡是出現陣列,函式的地方都可以用一個指標變數來表示,

只要該指標變數中賦予陣列或函式的首地址即可。這樣做,

將會使程式的概念十分清楚,程式本身也精練,高效。在c語言中,

一種資料型別或資料結構往往都佔有一組連續的記憶體單元。

用「地址」這個概念並不能很好地描述一種資料型別或資料結構,

而「指標」雖然實際上也是一個地址,但它卻是一個資料結構的首地址,

它是「指向」一個資料結構的,因而概念更為清楚,表示更為明確。

這也是引入「指標」概念的一個重要原因。

4樓:柯中左鶯語

1、指標概念:變數的地址(計算機記憶體位元組的編號)叫做指標,存放變數地址的變數叫指標變

量,簡言之,指標是用來存放地址的。

2、作用:指向這個變數或陣列的首地址,是變數的間接引用方式。其值如果改變,變數的值或陣列元素的值也會跟著改變。

程式對變數的操作實際上是對變數所在的儲存空間讀取和寫入資料。方便對變數的操作。

舉例說明:

inta=3;/*定義一個整型變數a,並賦初值3*/int*p;/*定義一個指標變數p*/

p=&a;/*讓p指向a的首地址,也就是a的地址*/程式為a分配一個2個位元組的儲存單元,假如2個位元組的地址分別為(abcd1和abcd2,唯一),那麼p裡面放的值就是abcd1,不是3。這時可通過p直接引用a,實際上*p=3。以後不管a存放在記憶體中的哪個地方,只用通過呼叫p就可以引用a。

這時如果令*p=4,則最後的a值也為4。對於陣列,指標是指向陣列的首地址。

5樓:夷詠緒如彤

自己去看這本書吧,上面有關於指標的上百個例子和詳細的程式註釋。

6樓:彭珂的課堂

c語言_071_指標的定義和使用_上

c語言指標基本概念及其指標變數的定義是什麼

7樓:景田不是百歲山

指標是常見間接訪問方式.指標就像一個快捷方式,它指向記憶體的一個地址,可以通過指標就可以間接的訪問到資料。對於計算機,訪問記憶體的方式有兩種,直接訪問和間接訪問。直接訪問通過就是通過變數名稱去訪問。

指標概念是構成c/c++的重要元素之一,是變數的一種型別,存放的是指定型別資料的地址,而同型別變數存放的是資料。

指標變數:就是一個變數,其值是可變的,與整形變數、浮點變數等等的命名規則完全相同。 「指標」是概念,「指標變數」是具體實現。

指標型別說明,即定義變數為一個指標變數; 指標變數名; 變數值(指標)所指向的變數的資料型別。

8樓:有露桑煊

在c語言裡,指標是一組記憶體的頭地址,可以存一個數,一個字元,也可以是一個陣列.

變數,就是像定義一個整型變數一樣的,定義的是一個指標型變數.

9樓:鄲濱田伶

指標是一個其數值為地址的變數(或更一般地說是一個資料物件)。

存放地址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的地址。

10樓:韶雅容貴瑋

語言中,指標是一種型別,被稱為「指標型別」。指標型別描述的是一個地址,這個地址指向記憶體中另外一個物件的位置。簡單地說,指標表示的是它所指向物件的地址。

1、比較point,*point,&point三者的區別

對於int

*point;

point:是指標變數,其內容是地址量。

*point:是指標變數的目標變數,即指標指向的那個變數,其內容是資料。

&point:是指指標變數本身所佔據的儲存地址。

2、指標與陣列

用指標和陣列名在訪問記憶體中的資料時,他們的表現形式是等價的,因為他們都是地址量。

陣列名錶示整個陣列的首地址,可以看作是固定地址的指標,不能被賦值。

陣列名無須賦初值,而指標在使用前必須賦初值。

3、字元指標和字串

字串是一個字元陣列,字串以『\0』結束。printf函式的%s格式輸出字元時,是從給定的地址開始,到遇上第一個『\0』字元時結束。

對字元指標初始化,是將字串的首地址賦給指標。

4、指標型函式

所謂指標型函式,即返回值是指標(地址)的函式。

5、多級指標

指向指標的指標(**p)就是二級指標,指向指標的指標的指標(***p)是3級指標。

多級指標類似於間接定址。

6、指向函式的指標

c語言中的函式名錶示函式的首地址,即函式執行的人口地址。

定義形式:[儲存型別][資料型別標示符](*指向函式的指標變數名)();

例子:int(*fun)();//指向函式的指標

,int

*fun();

//指標型函式,注意(*

fun)括號不能少

7、動態指標

當需要一大片記憶體的時候,最好使用動態分配。

使用malloc函式:void

*malloc(size_t

size)。

例子:int

*pn=malloc(10*sizeof(int));

double

*pd=malloc(10*sizeof(double));

關於c語言中指標賦值的問題,關於C語言中指標賦值的問題

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...

C語言指標運算詳解,c語言中,指標的運算是怎麼算的,如pa

文庫精選 內容來自使用者 zzbo2022 讓你不再害怕指標 前言 複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總...

關於C語言指標自增運算的問題,c語言中指標可不可以用在自增自減運算子中

搗蒜大師 這寫操作等價 p p 都是p加,然後 這些操作等價 p p p 相當於先 了,然後p再 include main p 指向2 printf d n p 2 p p 1 p指向3 printf d n p p指向4,再 4 p p 1 p指向5 printf d n p 5,p指向6 p p...