当我们使用未初始化的内存指针时,会导致程序无法进行,因为指针并没有指向一个合法的地址,这时候其内部存的只是一些乱码。所以在调用函数时,会使用乱码所指的内存,指针根本就无权访问,导致出错。
看一段代码
#include<stdio.h>
void getvalue(float x, float y, float* sum); //计算两个浮点数的和
int main()
{
float a, b;
float* sum;
scanf_s("%f%f", &a, &b);
getvalue(a, b, sum);
return 0;
}
void getvalue(float x, float y, float* sum)
{
float sum1;
sum1 = x + y;
sum = &sum1;
printf("两者之和是%.2f\n ", *sum);
}
会出现
解决办法是为指针动态分配内存,之后再将其释放
看代码怎么解决
#include<stdio.h>
void getvalue(float x, float y, float* sum);
int main()
{
float a, b;
float(*sum) = malloc(100); //为指针summ动态分配内存;
scanf_s("%f%f", &a, &b);
getvalue(a, b, sum);
free(sum); //用完动态内存之后记得将其释放,不然会造成内存的泄露
return 0;
}
void getvalue(float x, float y, float* sum)
{
float sum1;
sum1 = x + y;
sum = &sum1;
printf("两者之和是%.2f\n ", *sum);
}
博客记录成长