c語言指標傳遞問題,C語言指標問題

時間 2023-03-10 04:05:08

1樓:

指標傳遞、引用傳遞指的就是呼叫函式時傳遞的是指標、引用。 與之對應的還有傳值方式。這種方式只是傳遞了變數的乙個副本。

也就是說只傳了乙個值而已,並不是這個變數,所以就無法對這個變數更改了。而傳遞指標或者引用就不一樣了。傳遞的是乙個變數位址,那麼你更改這個位址對應的內容也就是修改這個變數了。

所以在陣列排序子函式中進行的排序操作就會直接作用到你的主函式中的陣列了。這樣,當返回主函式後,你定義的陣列內容已經發生了變化。這就是指標傳遞的價值了。

lyqf365|說的「 用引用來傳陣列好傳不太靠譜。。。好像我也沒見過引用傳遞陣列的。 你自己可以探索一下。

還有,如果定義引用的話,別忘了同時要對其進行初始化,這是和指標的不同點。

2樓:

指標傳遞就是指傳遞的是指標,void fun(int *a,int *b);

引用傳遞就是指傳遞的是引用,void fun(int &a,int &b);

至於temp=*a

*a=*b*b=temp

應該不能稱為指標傳遞,指標傳遞通常指的是函式之間的呼叫,在主函式和被呼叫函式之間傳遞。

中國物聯網校企聯盟技術部。

3樓:匿名使用者

就是這樣:void swap(int *a, int *b)

引用傳遞。void swap (int& a, int& b)

4樓:半邊是藍天

是什麼傳遞是看呼叫函式swap()中的形參型別是什麼;比如swap(int *a,int*b)形參型別為int*(指標)。所以就是指標傳遞。swap(int &a,int &b)的形參是int&(引用)。

所以就是引用傳遞;

5樓:匿名使用者

指標傳遞是用指標將陣列傳給乙個函式,引用傳遞是通過引用來傳。

不過,用引用來傳陣列好傳不太靠譜。。。

c語言指標問題

6樓:聽不清啊

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

7樓:帳號已登出

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

c語言指標問題

8樓:

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

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

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

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

3.分別編寫函式內容。

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

諮詢記錄 · 於2021-12-06

c語言指標問題。

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

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

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

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

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

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

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

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

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

關於c語言指標的乙個問題?

9樓:格里程式設計辦公技巧

這裡&p的位址是不會變的,不是列印不出來是沒到列印那個語句程式已經崩潰退出了。

圖中1處指標p沒有初始化,它沒有指向任何記憶體單元不能進行圖中2處的賦值寫入操作,這裡會程式崩潰退出。

c語言指標問題 10

10樓:彭珂的課堂

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

11樓:岔路程式緣

一、如有定義char y[4]= 321"

則表示式 *y+2的值是'5' 。

分析:y是字串陣列首元素'3'的位址,*y的值就是字元'3',再加上2,就是字元'5'(也可以說是字元'5'的asc碼值)。

二、 如有定義char z[2][4]=;則表示式*(*z+2)的值是 't'。

分析:z是二維字串陣列首字串「mat」的位址,*z的值就是「mat」首元素字元'm'的位址,再加上2,就是字元't'的位址,再取值,得到的就是字元't'。

三、如有定義char y[4]="321",*py=&y[0],則表示式*(py+2) 的值是'1' 。

12樓:網友

*y+2 = 0x35 = 5'

*(*z+2) =0x54 = t'

*(py+2) =0x31 = 1'

好好學習天天向上。

13樓:

首先*的運算優先順序是大於+的,所以先計算*y,在陣列表述中,變數名即是第零個陣列元素的起始位址,那麼*y就標識取得第零個陣列元素,*y='3',那麼*y+2='5'.

如有定義char z[2][4]=;則表示式*(*z+2)的值是。

請教c語言指標問題

14樓:匿名使用者

首先是陣列的概念,很多人對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;

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

15樓:匿名使用者

**b是個二級指標,a是一維陣列,這樣不能賦值,要進行指標轉換的。

16樓:匿名使用者

樓主是不是想知道s和a的值為什麼會一樣,而不是隨機的值吧。s和a都是在還有,一般列印指標值用的格式控制串是%p。 在c語言裡,((char *)

c語言指標問題

17樓:養海瑤

解釋上面的都說得清楚了。

這個得給你補補基礎:

由於二維陣列的邏輯結構是一維空間,儲存結構是二維空間,因此可以分別按照儲存結構和邏輯結構定義指向二維陣列的指標。

二維陣列是按行優先的規律轉換為一維線性存放在記憶體中的,因此,可以通過指標訪問二維陣列中的元素。

如果有:int a[m][n];

線性位址=a+i×m+j

若有:int a[2][3], p;

p = a[0][0];

一樣的int a[3][4];

int * p = a;

然後p+((i)*4+j)

就是指向的是a[i][j] 這個元素。

相當於p+x,這個x就是從a[0][0]元素開始加到指定x的位置的元素,先行,再列。

所以:*p = a[0][0];

*(p+2) =a[0][2];

*(p+4) =a[1][1];

所以結果就是m=a[0][0]*a[0][2]*a[1][1]即m=3*7*8

m = 168

18樓:匿名使用者

分成這三塊。

(*p) 取內容 ..a[0][0]

(*(p+4)) 同上, 但已經移動到陣列的第二行了,是a[1][1]=8 , 最後三塊相乘。

二維陣列在記憶體中是按行順序儲存的。。。

19樓:網友

m=a[0][0]*a[0][2]*a[1][1]

即m=3*7*8

你看一下教程中陣列的指標表達就懂了。

20樓:匿名使用者

看著累,我絕不這麼寫**。

21樓:匿名使用者

p是指向二維陣列中單個元素的指標,所以*p和*(p+2)和*(p+4)分別是取二維陣列第乙個、第三個和第五個元素的值,即:3,7,8。然後幾個數一相乘就得到最後的結果了。

22樓:匿名使用者

p指向的值乘以p+2指向的值再乘以p+4指向的值。

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

因為一維陣列陣列名就是第乙個元素的位址,二維陣列,是 每個元素為一維陣列 的一維陣列,所以,int a 3 5 a就是乙個有5個int元素的一維陣列 a 0 的首位址。a i 就是a i 0 的位址,a i j就是a i j 的元素位址。這個簡單,看圖 a就是a 3 5 的首位址,也是a 0 的首位...

c語言,指標,c語言,指標?

void swap int a,int b 這個函式,只是交換了a和b的指向,比如說原來a指向1000,b指向2000,交換後a指向2000,b指向1000。但是呢,指向的內容並沒有變,位址為1000裡面的內容依然是3 假設 位址2000裡面依然是5,而且p和q依然是分別指向1000和2000,也就...

c語言指標習題,C語言指標習題

首先從圖 a 中知道指標pd所指向位址為1430,而pd的位址是1440。1430位址儲存的數字為0.0 指標p的位址是1400,指向的位址是1410。位址1410儲存數值為7,指標p2位址為1380,指向位址1350,變數a位址為1350,值為14 指標p1位址為1300,指向位址為1100,而位...

C語言指標問題

乙個單鏈表,要知道乙個確定的結點指標 就是結點所在地 這個鍊錶才能正確操作。在這 中,h是頭結點的指標,假設不用p而直接用h,那麼,後面的p p next 就要變成h h next 當這個函式結束後h就指向最後乙個結點的下乙個結點了 空 我們不說還有什麼操作,就是想釋放這個鍊錶都找不到從哪兒開始了 ...

關於指標問題,C語言指標問題

對應sql server資料庫中的游標定義如下。forward only 指定游標只能從第一行滾動到最後一行。操作速度最快,效能最好。只能讀取資料。keyset 指定當游標開啟時,游標中行的成員資格和順序已經固定。對行進行唯一標識的鍵集內建在 臨時資料庫 內乙個稱為 keyset 的表中。對基表中的...