//int main(){
// int a = 6;
// int b = 3;
// float c = 1;
// int *sum = &a;
// int *sub = &b;
// int *mul = &a;
// int *a1 = &a;
// int *b1 = &a;
// float *div = &c;
// a1 = &a;
// b1 = &b;
// yunSuan(a1,b1,sum,sub,mul,div);
// printf("a+b=%d,a-b=%d,a*b=%d,a/b=%.2f\n",*sum,*sub,*mul,*div);
// return 0;
//}
int main(){
int a = 6;
int b = 3;
int *a1,*b1,*sum,*sub,*div,*mul;
a1 = &a;
b1 = &b;
yunSuan(a1,b1,sum,sub,mul,div);
printf("a+b=%d,a-b=%d,a*b=%d,a/b=%d\n",*sum,*sub,*mul,*div);
return 0;
}
作者: daitoudainaoali 时间: 2015-11-9 23:57
运行结果:
Segmentation fault: 11
下面的你可看看:
计算加减乘除结果:
#include<stdio.h>
int add(int a,int b,int *p1,int *p2,int *p3)
{
*p1=a-b;
*p2=a*b;
*p3=a/b;
return a+b;
}
int main()
{
int a=1;
int b=2;
int c,d,e;
int *p1=&c;
int *p2=&d;
int *p3=&e;
int f=add(a,b,p1,p2,p3);
printf("a+b=%d\na-b=%d\na*b=%d\na/b=%d\n",f,c,d,e);
return 0;
}
结果:
a+b=3
a-b=-1
a*b=2
a/b=0 作者: 陆露 时间: 2015-11-10 11:13
void test(int a , int b) 此时的int a , int b 是值传递
等价于 int a = 10 ; int b = 20; int c = a; int d = b;
结果c = 10 d = 20; 也就是说吧 a 和b 的值 10 和20 赋值给c 和d
c d 不管怎么修改 都不会 改变 a b 原本的值
-----------------------
void test (int * c,int *d);-
int main(){
int a = 10; int b = 20;
test(a , b); 这是地址传递,也就是说 a b 把自己家里的钥匙 给了c 和d
c d 把他家搞成什么样 a b 的值就会变成什么样。
}
void test(int *c , int *d )
{
*c = 100;//这里指针c 修改原本 a 的地址里的数据
*d = 200;//指针d 修改b地址里的数据
知道地址了就可以随意修改里面的数据
}
所以你不应该吧int *a , int *b 作为函数的参数传递。
你的目的 是计算a b 值的 + - * /
而不是 a b 地址的+ - * / 作者: black747521 时间: 2015-11-10 17:58
你的*sum,*sub,*mul,*div并没有初始化,是野指针,直接拿来运算是很危险的。是不允许的。作者: black747521 时间: 2015-11-10 18:00
陆露 发表于 2015-11-10 11:13
void test(int a , int b) 此时的int a , int b 是值传递
等价于 int a = 10 ; int b = 20; int c = a ...