c語言的一段程式沒看懂,高手指點下,謝謝

時間 2021-05-04 18:23:37

1樓:

a沒有指向具體東西的時候為假

2樓:清風留香

空 指標吧,沒有遇到過這種情況

3樓:匿名使用者

簡單來說就是在a指標有指向的時候才會往下執行。

4樓:

你的程式中,事實上s="abcd\0",也就是說在最後有乙個值為0的字元作為字串的結束標誌。

呼叫fun函式,a即指向s指標。

那麼*a="a",a+1則是串「bcd\0",遞迴呼叫fun函式,*a="b",a+1就變成"cd\0"...

*a="c",a+1="d\0"

*a="d",a+1="\0"

*a="\0",這時if判斷為假,則前一次的fun函式執行printf語句,即輸出d

如此往下執行,則呼叫fun(s)函式的最終輸出是:

dcba

不知道我說清楚了沒有?!

5樓:匿名使用者

********** 字元(*a)的對應的ascii碼值為0時為假 **********

關於:if (*a) 就是這個if (*a)有問題

*a 什麼時候為假呢

這個問題是這樣的:

先看例子:

int n;

scanf("%d",&n)

if(n)

這裡什麼時候為假呢?當然是 n=0 啊

那麼對於你的問題,也一樣,是 *a=0 的時候為假,

你可能還會問: *a 是字元,怎麼為整形的0呢?

其實, 字元都有與之對應的ascii碼,也就是說有整形數或者他器進製的數與之對應,字元可與整數比較的.

比如: 字元"\0"的ascii碼值就是0.

所以,if(*a)中條件為假的情況是:字元(*a)對應的ascii碼為0時,才為假.

另外,注意:*a存放的資料,而不是位址, a存放的才是位址,所以if(*a)說中是空指標時為假的說法是錯的.

關於ascii碼,可以在c/c++初級程式設計書上找到!!! 網上也很多!!!不懂就查吧

好了,就說到這了.

6樓:

用到了指標,遞迴函式,字串的知識

實現的功能 是字串倒排序

在main中,fun(s),起始傳的是s的位址 ,所以接收用到了 *a

a+1 要位址向後移動, 直到當指標指向最後乙個最後字元(字串預設最後一

個問"\0",不懂查書),遞迴呼叫返回 所以字串倒排序難點:字串如何儲存,遞迴怎麼返回。

請教這一段C程式

sizeof p 這裡的p是陣列名,所以返回3是陣列的長度,如果你給陣列中添乙個元素他的值就會變化。sizeof char 字元的長度為1.sizeof q 因為 q指向陣列的首位址,所以 q p 0 是個字元,所以長度也為1,sizeof p 0 這個p 0 是個字元,長度為1 sizeof q ...

求大神幫我看看這一段判斷素數的c語言程式

先讓我明確一下你的問題,你很糾結為什麼 if isprime m 不寫成不用 if isprime m ture 是把?是這樣的,你所說的那個寫法是最標準的,但是為了方便一般,會寫成程式裡面的那樣。從變異的原理上來講,是沒有錯的。因為isprime m 的返回值,是bool型的,結果只有1 對應tr...

求助 彙編的一段程式

bcd2asc mov dptr,0507h 目標首位址。mov r7,dpl 儲存到r6,r7 mov r6,dph mov dptr,0500h 源首位址。mov r5,dpl 儲存到r4,r5 mov r4,dph mov r3,07h 位元組總數。baloop movx a,dptr 讀取乙...