(*p)[4]是數(shù)組指針,每一個(gè)指針指向含有4個(gè)整形的一維數(shù)組;p[1]對(duì)于前面的聲明來說是指針,而p[1][1]是二維數(shù)組,所以不用再加上*取值,若要加上*,
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)10余年經(jīng)驗(yàn)成就非凡,專業(yè)從事網(wǎng)站制作、做網(wǎng)站,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文推廣,一元廣告等。10余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:028-86922220,我們期待您的來電!
代碼中:printf("%4d",p[i][j]);
可以這樣處理:printf("%4d",*(p[i]+j));
指針傳遞的實(shí)質(zhì)就是傳遞首地址,要取地址里面的數(shù)據(jù)就要叫*或者直接指定加[m],比如*argv,和argv[0]意思都是一樣的。
因?yàn)閕nput()函數(shù)創(chuàng)建的數(shù)組num[5]作用域在input()函數(shù)之內(nèi),當(dāng)input()函數(shù)調(diào)用結(jié)束后,這段內(nèi)存會(huì)被回收,也就是里面的值會(huì)變成其他數(shù)。修改辦法是在堆區(qū)創(chuàng)建數(shù)組變量手動(dòng)釋放內(nèi)存!
修改后:
第一題你好象寫錯(cuò)了;
#include
iostream
using
namespace
std;
int
main()
{
char
str[]="xyz",*ps;
ps=str;
while(*ps)
ps++;
for(ps--;ps-str=0;ps--)
putchar(*ps);
return
0;
}
ps=str是正確的,因?yàn)槟愕膒s在上邊定義的是一個(gè)指針。那么下邊的賦值運(yùn)算中就應(yīng)該是地址之間的傳遞,str作為數(shù)組名,它本身就是一個(gè)地址。同時(shí)ps也是一個(gè)指針。結(jié)果就是
xyz
第二題的答案是:
4
5
因?yàn)樽鳛樾问絽?shù)的b在傳遞到你的調(diào)用函數(shù)f之后雖然做了++操作但是這個(gè)b卻只是一個(gè)副本,不是真正的b,等這個(gè)f函數(shù)執(zhí)行完畢之后就會(huì)把這個(gè)副本釋放掉,對(duì)主函數(shù)的b并不產(chǎn)生影響。要想修改主函數(shù)中的數(shù)值,在傳遞參數(shù)的時(shí)候只有傳遞指針,就像你的a那樣,給函數(shù)傳遞一個(gè)指針就可以。
第三題答案是17
這個(gè)題就是把這個(gè)數(shù)組中的所有奇數(shù)項(xiàng)想加
第四題
答案是*2*4*
就是把所有偶數(shù)的元素都設(shè)置成*
第五題就是
2
5
8
10
整個(gè)題目就是把a(bǔ)[4]=a[0]+a[1]+a[2]+a[3]+a[4]
首先確定是字符指針數(shù)組還是字符數(shù)組指針,前者是一個(gè)數(shù)組,數(shù)組每個(gè)元素都是一個(gè)字符指針,后者是一個(gè)指向字符數(shù)組的指針。
若是指向字符數(shù)組的指針,則很簡(jiǎn)單,使用scanf("%s",
str);函數(shù)獲取輸入的字符串,然后使用字符串拷貝函數(shù)strcpy(stc,
dest);將獲取的字符串拷貝到指定地址的字符指針數(shù)組中,拷貝過程中注意檢查訪問數(shù)組是否越界,若越界,則需要在字符數(shù)組的最后一個(gè)元素賦值為結(jié)束符'\0'。
若是賦值
字符指針數(shù)組,那么就是對(duì)數(shù)組中的某一個(gè)元素指向的字符數(shù)組進(jìn)行拷貝賦值,其過程與前者相同。