1樓:匿名使用者
*pa++包含兩個語句,一*pa=*pa+1, 即pa指向的地址的值加1, 二pa=pa+1,即指標後移一個單位。
定義一個指標pa,那麼*pa,pa,&pa都是什麼意思?
2樓:匿名使用者
首先要清楚一個變數在記憶體中(在編譯或者函式呼叫時)都是會分配地址的如果有以下定義:int a, *pa = &a;
那麼 *pa 表示pa所指向的目標變數即a,也就是說此時這兩者是等價的
pa因為是個變數,在定義中初始化時向這個變數中存入了a的地址,所以pa表示a的地址
&pa表示變數pa的地址。我們可以定義一個二級指標指向這個變數pa,具體方法是:int **p; p = &pa;
3樓:全才之玉樹臨風
*pa表示內容,pa是地址,如果pa是指標,沒&pa這種用法。如果pa不是指標,&pa表示地址
4樓:匿名使用者
hhhqwfgggh bzcfujhiot458
c語言中,指標的運算是怎麼算的,如pa++
5樓:匿名使用者
指標自加一位
就是指向該型別的下一個單元
也就是實際增加的地址值
為sizeof(*pa)
6樓:雲淡風輕in蘇州
pa++就是pa = pa+1
但是這個1的位元組數是根據pa指標的型別來取值的比如int* pa;那這個1就是sizeof(int)double*pa;那這個1就是sizeof(double)陣列的話,很簡單,就是指向下一個元素的地址!
7樓:我是你爺
要看什麼型別,它會指向下一個變數的首地址,比如p指標是long int型的,p++就會跳過四個位元組指向下一個。一般指標自加運用於陣列中,因為這樣可以方便指標一個個指向陣列中的成員。
8樓:罪_飄落無殤
如果是陣列就指向下一個元素地址
9樓:維真
指向pa後面一個地址
c語言指標*pa++與*++pa問題
10樓:w海_風
*p++先取p值做*p運算,再使p加1即指向向一閣元素,是的
11樓:
是的,*pa++和*++pa就是誰在前先算什麼,*pa++就是先算*pa,在算++,*++pa先算++,在只想pa
在c語言陣列指標中(++*(pa+1)[1])表示第一行的首地址加一嗎?
12樓:自我程式設計
你這個**除非pa是二維陣列指標或二級指標(比如int (*)型別或int **),否則如果是一級指標(比如int*)這**就是錯誤的。
pa為指標,這裡小括號優先,先將pa指向的地址+1(後面的pa表示最初地址+1)。
原式子變為++*pa[1],這裡中括號優先,所以原式子相當於++*(pa[1])。
進一步原式相當於++(*(pa[1]))。
顯然這裡pa如果是一級指標,那麼pa[1]就是一個值,*pa對值取值就錯了。
所以假設pa指向一個二維陣列int a[3][3]=,,}這個式子pa初始指向第一行。
所以pa+1後,就是指向第二行。
所以(pa+1)[1],就是取從第二行開始的二維陣列(,})的第2航行元素,也就是這樣的一維陣列。
所以前面*取的就是的首元素值,再算++,就是對首元素的值自增。
所以這個**,pa是指向二維陣列的指標,那麼式子就是對第三行首元素值自增。
下面我們可寫**測試:
#include
int main()
int a[3][3]=,,};
int (*pa)[3]=a;
printf("式子執行前a[2][0]=%d\n",a[2][0]);
(++*(pa+1)[1]);
printf("式子執行後a[2][0]=%d\n",a[2][0]);
return 0;
13樓:莊政警
不是的。
""優先於"*",所以++*(pa+1)[1] 就是++*((pa+1)[1])而(pa+1)[1]就是 *(pa+1+1)就是pa[2],總體就是++*(pa[2]), 下標方式就是++pa[2][0]
很直觀了: ++*(pa+1)[1]的含義是第二行第0列的值+1驗證一下:
c語言中 s=*pa+*pb;什麼意思
14樓:匿名使用者
指標變數pa 指向一個擁有某種型別的數的單元 ,這個單元裡存放著一個某種型別的數a
指標變數pb指向一個擁有某種型別的數的單元 ,這個單元裡存放著一個某種型別的數b
*pa+*pb即取出a和b的值相加 a+b 然後把結果賦值給s
15樓:匿名使用者
亂碼的關鍵還是資料型別問題。char的值的範圍(-128 ~ 127)
"字母z向後錯8位後在ascii碼錶中進入了小寫字母的範圍"
pa=*pa+*pb;
if(*pa>'z'||*pa>'z')
那是因為*pa的內容先被修改了,才做判斷。當*pa原來是'z'時,比如+9,就是99,進入了小寫範圍。這時你做判斷if(*pa>'z'||*pa>'z')就不對了。
先判斷大小寫,再分別對待,別嫌麻煩
我的**
int main()
else //不是大寫,那就是小寫咯
s1[i] = c1;
} printf("%s\n\n", s1);
return 0;}
16樓:聶鑫
假設int a = 3;
int b = 5;
int s = 0;
int *pa;
int *pb;
pa = &a;
pb = &b;
s = *pa + *pb; //相當於a+b
s = 8;
*表示間接運算子,能夠通過pa這個指標所指向的地址去找到該地址的變數。
在這裡,pa = &a; *pa = 3;
&表示取地址符,&a就是取到a這個變數的地址
17樓:東門子
pa和pb是兩個指標,你又沒提供其他內容,我姑且就認為是int型了。*pa和*pb就是取其內容
所以,s等於兩個整數之和
18樓:包籽
*是取值的意思,而pa和pb都是地址,整個就是取pa的值和pb的值賦給s
一道c語言的題目,求詳細解釋*pa與pa的區別
19樓:匿名使用者
這裡涉及的主要是對指標的理解;
首先宣告四個變數,兩個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
20樓:匿名使用者
答案為a、10
你迷惑的可能是這裡:
int *pa=&a,*pb=&b;
其實這個相當於:
int *pa,*pb;
pa = &a;
pb = &b;
這個是初始化的地址賦值模式,和指標正常賦值語句*pa=a是不一樣的。
21樓:匿名使用者
#include
void main()
/*a、10 b、11 c、12 d、7*//*其實我沒看懂,試過只後才知道結果是什麼*/a=5,b=6
pa=0012ff7c,pb=0012ff78*pa=5,*pb=6
a=5,b=6
pa=0012ff7c,pb=0012ff7c*pa=5,*pb=5
10press any key to continue
在c語言中,pa = &a[0]; *pa = *pa +1和*pa++等價嗎
22樓:匿名使用者
不等價。*pa++,++的優先順序高,相當於*(pa++),加的是地址,不是內容。
C語言中 pa,這是什麼意思p a這又是什麼意思?這兩名可以等效麼?作用和意義是不是一樣的
p a代表指標指向a p a,如果a是個具體數值則可,否則語法錯誤 p a,意思是把a是地址給p,這個p定義的時候是一個指標變數,p a,也是這個意思,比如a 2,那麼 p就是等於2,p是存放2這個值的空間的地址,可以等效。一樣吧。第一個應該是先定義p,比如int p 就是定義一個指標p。p a。就...
C語言指標函式,c語言中指標怎麼使用?
應該是的,還可以用f a i 的形式。去程式設計嗎?我學這些的是一頭霧水。c語言中指標怎麼使用?1 使用場景 使用指標時,必須將它指向一個變數的地址或者為它分配 空間方能使用,如下所示 include include int main int argc,char const argv int b,d...
C語言中指標問題 設int a,那麼a的意義是什麼呢
這是一個2級指標,指向int型別的指標的指標。p 就是1級指標,就是一個一維陣列的陣列名,再 才是資料!a 0 是一個記憶體地址,是a 0 這個一維陣列的開始地 址。可能在char型別中使用比較多,char a 3 5 的話,a 0 就是一個字元專陣列的開始地屬址了,可以讀入或輸出。int p 是一...