本文目錄一覽:
- 1、在c語言中,有如下式子:int a[5],*pa=a; pa+=2; 他說:*pa=a+2*2=a+4,而不是=a+2 這是為什麼呢?
- 2、c語言中 int a. *pa; 是什麼意思?
- 3、在c語言里為什麼要這麼寫? int a[5],i,*pa; pa=a; 而不是這樣寫 pa=a[5
- 4、在C語言中,有如下的寫法: int a = 5; int *pa; pa = &(a + 1);
在c語言中,有如下式子:int a[5],*pa=a; pa+=2; 他說:*pa=a+2*2=a+4,而不是=a+2 這是為什麼呢?
在這行代碼中int a[5],*pa=a; pa的值就是數組a的首地址, pa+=2就是向後移動兩個元素的位置,pa+=2 和 pa = a +2是一樣的,而不是a +4。a+4就是從數組的首地址開始移動4個偏移量,是錯誤的。
c語言中 int a. *pa; 是什麼意思?
先糾正一下,a後面不是點,是逗號
定義一個整型變量a,以及一個指向整型量的指針pa
在c語言里為什麼要這麼寫? int a[5],i,*pa; pa=a; 而不是這樣寫 pa=a[5
因為int a[5]的含義是內存幫你開闢一個能放5個int大小的空間,它的控件首地址為a
int *pa的含義是定義一個變量叫pa,它做了*運算之後,就是一個int,所以pa就是個指針,指針變量可以保存地址
綜上,pa=a是把你開闢的那個空間的首地址賦予pa這個指針變量
這才合乎邏輯。
以上是依照原理解釋。
下面加上一個無腦的解釋,一般小時候老師都這麼說:這就是語法,固定用法,記住就行!
在C語言中,有如下的寫法: int a = 5; int *pa; pa = &(a + 1);
首先,你定義指針pa的時候最好先給它初始化,因為不初始化的話它可能指向一個很重要的區域,你這時候如果再賦值則可能改變這個重要區域的數據。至於pa=(a
+
1)這個是不對的,因為a+1的結果是一個數,它存放在內存的一個臨時空間中,臨時空間是會被釋放的,你取臨時空間的地址是不可取的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/231429.html