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個偏移量,是錯誤的。
2. c語言45題目,pa不就是a的地址&pa是什麼意思
pa也是個變數啊,既然是變數,它一樣有地址,&pa就是pa的地址。
3. 在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這個指針變數
這才合乎邏輯。
以上是依照原理解釋。
下面加上一個無腦的解釋,一般小時候老師都這么說:這就是語法,固定用法,記住就行!
4. C語言 π的表示
標準的C語言中沒有π這個符號及常量,一般在開發過程中是通過開發人員自己定義這個常量的,最常見的方式是使用宏定義:
#definePI3.141592
也可以直接普通變數定義,如:
doublepi=3.141592;
(4)c語言pa等於多少擴展閱讀:
數學函數
所在函數庫為math.h、stdio.h、string.h、float.h
int abs(int i) 返回整型參數i的絕對值
double cabs(struct complex znum) 返回復數znum的絕對值
double fabs(double x) 返回雙精度參數x的絕對值
long labs(long n) 返回長整型參數n的絕對值
double exp(double x) 返回指數函數ex的值
5. 在c語言中,pa = &a[0]; *pa = *pa +1和*pa++等價嗎
不等價。*pa++,++的優先順序高,相當於*(pa++),加的是地址,不是內容。
6. c語言 關於指針 我在書上看到這樣一句話 pa=&a[0] 執行之後pa與a具有同樣的值
pa=&a[0]其實就相當於pa=a;
因為a是數組名,數組名實質就是數組首地址
pa=&a[0]執行之後pa的值與a的值完全相等(具有相同的地址編號),也就是說printf("%d",pa)和printf("%d",a)的輸出結果完全相同
但pa的值並不等於a[0]的值,只有*pa或*a的值才等於a[0]的值,也就是說printf("%d",*pa)、printf("%d",*a)和printf("%d",a[0])的輸出結果完全相同
7. 一道C語言的題目,求詳細解釋*pa與pa的區別
這里涉及的主要是對指針的理解;
首先聲明四個變數,兩個int類型的變數,兩個int *類型的變數;int類型的變數存儲的是int類型的值,int *類型的變數存儲的是一個地址,這個變數可以存儲一個int類型的地址,而這個int類型的地址裡面毫無疑問存儲的是一個int類型的值。
int *pa=&a,可分解成:
int *pa;
pa = &a;//把a的地址賦給pa
這樣pa這個指針就指向了變數a的地址;
* 是一個解引用符,在這里,*pa就是指針pa所指向的內存當中存儲的變數;也就是說這時*pa與a是等價的。
pb與b的關系也是一樣的;
現在就很清楚了:
*pa=3;//往a這個變數里存3
*pb=4;//往b里存4
a=5;//往a里存5
b=6;//往b里存6
pb=pa;//pb這個指針指向變數a的地址
*pa + *pb;//就是a + a,並且此時a = 5
答案自然是 A
8. c語言中,指針的運算是怎麼算的,如pa++
pa++就是pa = pa+1
但是這個1的位元組數是根據pa指針的類型來取值的
比如int* pa;那這個1就是sizeof(int)
double*pa;那這個1就是sizeof(double)
數組的話,很簡單,就是指向下一個元素的地址!
9. c語言中,指針那一節,*是什麼含義*pa為何等價於a
*為取數運算符,p代表地址,*p的意思就是,把p的地址中存放的數取出來,所以*p的值就是a。