2014-01-25 34 views
0

下面是它只打印單個值的代碼如果我想打印整個數組,它不能正常工作。從C++中的指針數組打印值

#include <iostream> 
using namespace std; 

int *firstDay(int fd) 
{ 

int d[35] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
int setday = 1; 
int *pnd; 
pnd = d; 

int limit = 35 - fd; 

for(fd;fd<limit;fd++) 
{ 
    d[fd] = setday; 
    setday++; 
} 
return pnd; 
    } 

void display(int *d) 
{ 
cout<<d[1]<<endl; // value 0 
cout<<d[2]<<endl; // value 1 
cout<<d[3];  // value 2 
} 

int main() 
{ 
display(firstDay(2)); 
return 0; 
} 

如果我只寫一個cout那麼它的工作原理和打印正確的值如果我使用一個以上的cout那麼就不能打印正確的值。

+0

把數組d [35] = {...}外函數FirstDay並應該工作。 – maciekm

回答

0

firstDay正在返回一個指向函數內聲明的數組的指針;這個指針在函數返回時立即失效,並且您嘗試解除引用會導致未定義的行爲。

+0

如果我使用一個'cout'作爲任何值來打印它的值,它意味着'firstday'返回所有數組,那麼它爲什麼不起作用。 – user3211303