C 指標的問題,C語言指標問題

2023-03-25 07:50:02 字數 6299 閱讀 2639

1樓:匿名使用者

這麼說吧,指標是以後資料結構的基礎,比如單鏈表,雙鏈表,二叉樹等等等等,全部都時指標做的,還有1720次對於現在的計算機來說,是個很小很小很小的數量級。指標學好了受益匪淺,並且也是程式設計今後必須的。指標的確是可以大大提高效率,但是要看你怎麼用,就和遞迴演算法一樣,另外,顯示位址是你語句的問題。

比如int * a;

你call指標a的值時要加&

如cout<<&a;//這是輸出值。

cout《有問題繼續問啊,哈哈~我看到了一定你~

2樓:匿名使用者

指標不是用來加速執行速度的,而是用來加速程式設計過程的。

實際上指標隱含定址過程,所以不要用你這樣的例子來體現指標的優越性。

3樓:公西姮

暈。。樓上的所說都不錯,只是和這個問題無關。

起始陣列不過是常量指標而已。。。編譯後速度差不多簡直是一定的。

4樓:左手西陽

理論上直接使用指標確實比陣列(使用運算子[ ]要快一些。不過我覺得這不是迭代次數多一點就可以由人察覺出來的。只是說記憶體定址和訪問更快了一些。

可以試著包含進去時間標頭檔案,在程式的頭尾分別記下當時時間,然後計算出時間差。(我寫過的漢諾塔確實執行了幾秒鐘,10個盤子,都是函式呼叫,不過沒試過計算時間)

c語言指標問題

5樓:聽不清啊

這個圖中的第378行語句,在不同的編譯系統中,可能會有不同的解釋。所以一般在容易引起歧義的情況下,最好不要採用這種寫法,在這裡,他是先進行後面的自加操作的結果。

6樓:帳號已登出

專題講解c語言指標,幫助你在短時間內掌握指標的各種玩法。指標是c語言的難點,也是c語言的重點,玩不轉指標,學習c語言就沒有意義。

c語言指標問題

7樓:

摘要。您好,1.首先分析用什麼語言寫。

本題是統計檔案裡的行數,單詞數,字元數的數量。對我而言,與其它語言相比,我比較熟悉c語言,面對這種小程式,我覺得用c語言寫更簡單一點。

2.分析需要用到幾個函式。

我們要統計行數,單詞數,字元數,所以要用三個函式來分別統計這三者。另外,還可以用乙個函式來統計這三者,程式執行時,可以直接顯示這三者。當然還有乙個函式就是main函式。

3.分別編寫函式內容。

每個函式裡的內容其實還是很容易的,我會在後面進行**展示及解釋。

諮詢記錄 · 於2021-12-06

c語言指標問題。

您好,1.首先分析用什麼語言寫本題是統計檔案裡的行數,單詞數,字元數的數量。對我而言,與其它語言相比,我比較熟悉c語言,面對這種小程式,我覺得用c語言寫更簡單一點。

2.分析需要用到幾個函式我們要統計行數,單詞數,字元數,所以要用三個函式來分別統計這三者。另外,還可以用乙個函式來統計這三者,程式執行時,可以直接顯示這三者。

當然還有乙個函式就是main函式。3.分別編寫函式內容每個函式裡的內容其實還是很容易的,我會在後面進行**展示及解釋。

使用c語言程式,題目已經有描述了。

您好,很努力為您查詢哦!您檢視問題,謝謝。

文獻查詢一般是通過關鍵詞進行查詢的,英文文獻的關鍵詞是出現次數最多的單詞。現給定一篇英文文獻,用乙個字串陣列儲存,陣列的每個元素儲存的是文獻中的一句話,書的內容不多於10000句。(單詞僅由字母構成)

1. 實現乙個函式,以文獻內容和乙個單詞為引數,統計文獻中該單詞出現的次數。

(以引數形式返回給該函式的呼叫者),並將第一次出現該單詞在陣列中的位置指標作為返回值。

您好,我們只能為您查到這些內容哦,還是您好問問身邊朋友可能給您更詳細解答呀!謝謝

c++指標問題

8樓:熊貓威武降臨

先來回答你的問題,char * 是乙個char指標指向乙個字串。如:char * c = something for nothing」;

如果改成 char & 是乙個char的引用 如 char a = c』;char &b = a;//乙個字元。

char * 和char & 是兩個完全不同的東西。

看你的函式原型需求:可能可以改為:void stu::setstudent(char &*name,float chinese,float math),char &*為乙個char * 的引用。

1.從記憶體上來講 系統為指標分寸記憶體空間,而引用與繫結的物件共享記憶體空間,系統不為引用變數分配內容空間。

2指標初始化以後可以改變指向的物件,而引用定義的時候必須要初始化,且初始化以後不允許再重新繫結物件。

3.所以引用訪問物件是直接訪問。指標訪問物件是間接訪問。

4。如果pa是指標,那麼*pa就是引用了。

9樓:匿名使用者

a) char *p=s; 正確。

b)char *p=&s; p是字元指標,而&s是指標變數s的位址,型別為:char **所以型別不匹配,是錯誤的賦值語句。

c)char*p;p=*s; *s是h字元,p是指標,所以不相匹配。

d)char *p;p=&s; 與b同。

c++指標的問題。

10樓:

剛開始學吧?

class 還沒有學吧?

不要著急,繼續往後看,你就會明白的。可以把你遇到的問題及下來,回頭再思考。

11樓:葉小憐

指標就像是錘子,在李元霸手裡就是殺人如麻的利器,在一般人手裡就只能砸死自己。

12樓:匿名使用者

個人覺得c++一定要學會用類和其中的很多庫,模板的;其實c++中提倡能用引用則用引用,實在不行,再用指標。

13樓:

膜拜 二樓。

神一樣的存在。

關於c++指標的問題

14樓:蒙面侍衛

一、int *p=&a;換成int *p;*p=&a;就出錯了,這是為什麼?

二、另外就int *p=&a而言,&a返回的不是a的位址嗎,那*p不就等於a的位址了?

關鍵處在於你要區分定義時的*p和定義後的*p不是同一回事。定義後p已經是乙個指標,而定義前p只是乙個變數名。

15樓:匿名使用者

int *p是給指標定義的,*p表示指標指向的變數,而p指向該變數的位址。

16樓:匿名使用者

int *p是定義乙個int型的指標。

可以用&把a的位址取出並賦給p。

但是你先定義了指標p。

*是間接定址運算子。

*p就是乙個int型的了。

不能把乙個位址賦給他。

17樓:匿名使用者

變數名重複了,有沒有過載,你定義了兩個相同的變數,因該這麼寫。

int *p;

p=&a;

18樓:網友

int *p = a,&a是乙個位址,位址中儲存的內容為a,而*p是乙個指標,指向的是這個位址,因此,這個語句中*p指的就是a

而對於int *p;*p=&a,這句話的意思,是指*p這個指標指向的是存放a這個變數的位址,因此,此時p中儲存的是乙個位址,這個位址中儲存的又是a這個變數在記憶體中存放的位址。

19樓:有錢買不起房子

int *p=&a;

這種方式是定義乙個指標變數,並同時初始化。

而int *p;p=&a;是2條語句,定義乙個指標變數p,在讓p指向a的位址。

指標的數值是儲存其他變數位址,*是間接獲取數值的。

20樓:匿名使用者

同學,定義語句中int *p=&a; 這兒p前面的「*」是說明p是指標的乙個標誌,存放a位址的是指標變數p,而不是*p,*p是位址裡存放的值,也就是變數a的值,是3。

int *p=&a;和int *p;p=&a; 當然是等價的,記住定義時指標變數前的「*」是指標的標誌,而指標變數只是p。

21樓:倒霉熊

int *p; 是宣告乙個指向整型的指標,此時*是型別宣告符的一部分,也就是 int * 指明了p的型別。

*p;這種形式,代表了其指向位址上儲存的值,例如 int *p = a; 則 *p與a是等價的,此時*是作為位址解除符使用的。

p是指向位址的,也就是與&a等價。

22樓:匿名使用者

看下面的語句:

int* iptr;

int icount = 18;

iptr = icount;

這裡涉及到乙個型別匹配的問題。

iptr實際是乙個位址值。將位址值賦給位址變數肯定沒問題。

*iptr = icount; 的話,就是把乙個位址賦給乙個未知型別的變數。所以會出錯。

差不多就這樣吧,我也是半桶水,歡迎樓主與我一起**。

23樓:叫撒名字啊啊啊

朋友,錯誤的原因是這樣的。

首先,*p是一值,&a是乙個位址;

在你定義指標的時候,int *p就是乙個指標,他是指向某一單元的指標,所以你可以吧&a賦值給他並且不報錯,但是你如果先定義int *p。然後在用*p=&a,那就肯定是錯誤的了。原因是你企圖用乙個位址給乙個值賦值。

error c2440: 'cannot convert from 'int *'to 'int'

這是執行錯誤的提示,你用乙個int*企圖給乙個int變數賦值,所以是錯誤的。

c++ 指標的小問題

24樓:街角哦祝福

1全部首先要清楚,指標本省也是一種變數,故它本身有位址值*ppi為它所指向的指標的位址值,ppi是變數ppi自身的位址值int**ppi=&p2 因為*ppi是二重指標,它要指向乙個位址,所以要把乙個指標自身的位址值賦給它這就像就像一重指標(p2)一樣,他指向乙個整形變數,故要把整形變數的位址值賦給它。

"int *p2;其中*p2是位址" *p2不是位址,這裡是定義,*只是乙個指標的標誌符,不是取位址符,所以依然是p2為位址。

對與int **ppi;,這裡定義時說明它是乙個二重指標,但賦給它的值要求依然是乙個一重指標的位址; 它(**ppi)使用時,表示的是變數的值(及它所指向的一重指標所指向的變數),這裡為k的值; 而*ppi是一重指標(這裡為p2)的位址值,ppi則為ppi它自己的位址值。

25樓:匿名使用者

int* p2; 指p2裝的是位址,*p2是取p2所指的位址裡的內容。

int* p2;你可以認為p2是乙個一維int陣列的開始位址。

int** p2,你可以認為p2是乙個二維int陣列的開始位址。

int* ppi中,ppi指的是乙個位址,*ppi指的是ppi裝的那個位址的內容(這個內容也是個位址)

如果你理解了記憶體分配與定址,更好理解。

請教c語言指標問題

26樓:匿名使用者

首先是陣列的概念,很多人對c語言的陣列的概念理解並不到位,有時間可以找打相關的資料看一看,像a這樣的一維整形陣列可以隱式轉換為 int*, 所以你後面的 **b = a; 這句**是錯誤的。

很多人對指標的理解也是不太正確的,其實指標的意思並不複雜,指標儲存的是位址物件,同時它還需要攜帶乙個資訊就是該位址物件儲存的內容的型別。所以 int **b; 中的 b乙個位址物件,而該位址儲存的內容是int*, 即乙個整形的位址資訊。所以後面的**只能這樣寫 *b = a; 意思是什麼通過前面的描述你應該清楚了。

然後++b的意思就比較難於解釋了……

我們假設如下吧:

int a = 假設資料a的首位址為0x000000ff;那麼該陣列的長度就是5*4bytes=20bytes了。(這裡假設int型佔用4個位元組)

而int **b; 假設b的位址為 0x 0000ff00,而該位址的儲存的資料的持續長度為4bytes;(32位環境)

*b = a; 會把 0x000000ff這個位址值賦值給以位址0x0000ff00開始的4bytes的空間裡,這裡我們假設機器為32位的,所以記憶體位址為32位。

++b 就是把儲存在位址0x0000ff00這個位址的指標內容加1個單位,因為b為指標型別,所以這1個單位是4bytes,所以在該位址儲存的內容變為 0x000000ff+0x4 = 0x00000103;

我相信這樣解釋應該很清楚了?

C語言指標,問題啊,初學啊,C語言指標問題(初學者)

j c這一句是錯誤的,j是int 型別的變數,只能儲存int型變數的位址值,應該改為j c才對。p是位址符格式。這樣輸出的是c的記憶體位址。想要通過j輸出c的值,應該這樣寫printf d j j儲存的才是c的值,j儲存的是c的位址。所以1 3 都應該改為 j p是輸出位址符格式,j是指向變數c的指...

c語言指標問題,求解答,C語言中的指標問題,求解答

1,是取值運算子,因為你要判斷tt的值的情況,所以要用 2,tt 相當於 tt tt 1 這個是指標向後移動,不需要取值,謝謝,望採納 你的tt是指標吧。tt指向的是 位址 比如位址值為 10ff 1000 tt是取這個位址中儲存的資料,而tt 意思把tt指向的位址值 1,即tt現在指向了 10ff...

C語言指標問題

include void main printf how many rows?n scanf d m printf how many colum?n scanf d n printf the hightest score is d n max printf the student is d clas...