2014-01-26 91 views
0
#include<stdio.h> 
#include<conio.h> 
void change(int *); 
int main() 
{ 
int a[5] = {1,2,3,4,5}; 
int i; 
clrscr(); 
change(a); 
for(i=4;i>=0;i--) 
    { 
    printf("%d\n",a[i]); 
    } 
getch(); 
return 0; 
} 
void change(int *b) 
{ 
int i; 
for(i=0;i<=4;i++) 
{ 
    b=*b+1; //showing nonportable pointer exception 
    b++; 
} 
} 

未如預期的輸出,沒有錯誤和警告1 ....
預期輸出:65432 電流輸出:54321非portale指針轉換

+0

或許,如果你確實讀** **和**試圖修復**警告...'B = * B + 1'應該已經' * b = * b + 1'或簡單的'* b + = 1'。 – 2014-01-26 21:30:49

回答

0

bint *類型而*b + 1是鍵入int。您正在爲指針類型分配int類型。變化

b=*b+1; 

*b = *b+1; 
+0

我有一種感覺,人們永遠不會知道,警告應該被視爲硬錯誤... – 2014-01-26 21:32:25

+0

@ H2CO3;同意。 :) – haccks