想用指针算两数和差,但是程序到addition()函数里面就不跑了,不知道为啥
#include
#include
using namespace std;
void addition(int*i,int*j,int*sum,int*subtract);
int main()
{
int*sum=0;
int*subtract=0;
int m=4,n=8;
addition(&m,&n,sum,subtract);
cout<<*sum<<"\t"<<*subtract;
return 0;
}
void addition(int*i,int*j,int*sum,int*subtract)
{
*sum=*i+*j;
*subtract=*i-*j;
return;
}
程序刚进入addition就不跑了
希望帮忙找出bug
#include <iostream>
#include <cstdlib>
using namespace std;
void addition(int i,int j,int *sum,int *subtract);
int main()
{
int sum=0;
int subtract=0;
int m=4,n=8;
addition(m,n,&sum,&subtract);
cout<<sum<<"\t"<<subtract;
return 0;
}
void addition(int i,int j,int *sum,int *subtract)
{
*sum=i+j;
*subtract=i-j;
}
7,8行的变量定义成指针没分配内存空间,非法访问造成段错误了,建议直接定义成 int num;然后函数传参数是取地址&num
int*sum=0;
这是在闹啥,你把指针指向内存地址是0的地址
然后就要给这个内存写入数据?
系统没写崩了只能说CPU够智能
此外,你这代码问题多了
i和j不返回值,不要定义为指针
sum返回值,定义为&sum即可,也不需要定义为指针
那么形参搞定了之后,实参可以都是int型,可以没有指针
int * sum=0;
int * subtract=0;
这2个指针指示声明并赋值NULL,形成了所谓的空指针,你给他赋值没意义。
int * sum, isum;
sum=&isum; //要让指针指向一个有意义的地址后才能赋值
int * subtract,sub;
subtract=&sub
int m=4,n=8;
addition(&m,&n,sum,subtract);