[問題] C:PassByAddress,main和子function值不同
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++ 4.9.9.2
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我寫了一個pass by address的練習
在子function中, 將亂數值設到指標所指的位置
再把指標位置回傳給main, 再輸出設好的值
但問題是, 子function和main所輸出的值, 會有幾組不一樣(應該要是一樣)
餵入的資料(Input):
用rand()寫的亂數
預期的正確結果(Expected Output):
假設輸入3, 結果應該是(舉例)
17 0023FF44
11 0023FF48
20 0023FF4C
17 0023FF44
11 0023FF48
20 0023FF4C
錯誤結果(Wrong Output):
17 0023FF44
11 0023FF48
20 0023FF4C
17 0023FF44
2359112 0023FF48 <---這行的值有問題
20 0023FF4C
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/6DPOrrfO 網頁版
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define RAN() srand(time(NULL))
int *number(int input,int fake);
int main(void)
{
int input_number=0,initial=0;
printf("input the NO. of random:");
scanf("%d",&input_number);
int *kk=number(input_number,initial);;
int j=0;
for(;j<input_number;j++)
printf("%d %p\n",*(kk+j),(kk+j));
system("PAUSE");
}
int *number(int input,int initial_PTR)
{
RAN();
int *bb=&initial_PTR;
int i=0;
for(;i<input;i++)
{
*(bb+i)=rand()%20+1;
printf("%d %p\n",*(bb+i),(bb+i));
}
printf("\n");
return bb;
}
補充說明(Supplement):
無
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.65.56.150
推
02/25 17:21, , 1F
02/25 17:21, 1F
→
02/25 17:21, , 2F
02/25 17:21, 2F
→
02/25 17:22, , 3F
02/25 17:22, 3F
→
02/25 17:22, , 4F
02/25 17:22, 4F
→
02/25 17:35, , 5F
02/25 17:35, 5F
→
02/25 18:41, , 6F
02/25 18:41, 6F