這裏是程序我有一個問題:函數指針和內存管理使用C
#include<stdio.h>
#include<stdlib.h>
int * function1(int);
int * function2(int);
int main(void)
{
int * result1,* result2;
int val = 1000;
result1 = function1(val);
fprintf(stderr,"result1 = %d\n", *result1);
result2 = function2(val);
fprintf(stderr,"result2 = %d\n", *result2);
fprintf(stderr,"result1 = %d\n", *result1);
}
int * function1(int val)
{
int result = val + 1500;
return &result;
}
int * function2(int val)
{
int result = val - 1500;
return &result;
}
所以result1
初始設置爲2500,並且result2
是-500。但是,初始化代碼後,代碼未觸及result1
,但它從2500
更改爲其他內容。任何人都可以給我任何提示,爲什麼會發生這種情況?
代碼中沒有函數指針。也許你的意思是返回指針的函數? (函數指針是指向函數的指針。) – zindorsky 2014-08-29 15:07:43
爲什麼這些函數完全返回指針?爲什麼不直接簡單地'結果'?在那種情況下,根本沒有問題。 – 2014-08-29 15:09:54
好奇的是,爲什麼發佈「從2500更改爲其他內容」而不是「從2500更改爲X」? X是你看到的價值。 – chux 2014-08-29 15:22:17