黑马程序员技术交流社区

标题: 经典C语言 指针问题,为什么不能传入两个指针进函数? [打印本页]

作者: Micro    时间: 2015-2-15 13:55
标题: 经典C语言 指针问题,为什么不能传入两个指针进函数?
//// 定义一个函数 ,可以用来 两个数的和同时,并计算是两个数的差;
//#include<stdio.h>
//int sumAndCha(int a,int b, int *cha);
//int main(){
//    int  *cha;
//    int sum=sumAndCha(12,14,cha);
//    printf("sum=%d,cha=%d\n",sum, *cha);
//    return 0;
//}
//
//int sumAndCha(int a,int b, int *cha){
//    int sum =0;
//    sum=a+b;
//    *cha= a-b;
//    return sum;
//}
//以上的代码是正确的。
为什么下面的就会出错?
#include<stdio.h>
int sumAndCha(int a,int b, int *cha,int *mul);
int main(){
    int *mul;
    int  *cha;
    int sum=sumAndCha(12,14,cha,mul);
    printf("sum=%d,cha=%d\n,mul=%d",sum, *cha,*mul);
    return 0;
}

int sumAndCha(int a,int b, int *cha,int *mul){


    int sum =0;
    sum=a+b;
    *mul=a*b;
    *cha= a-b;
    return sum;
}


作者: 蜡笔3285    时间: 2015-2-15 13:55
  1. #include<stdio.h>
  2. int sumAndCha(int a,int b, int *cha,int *mul);
  3. int main(){
  4.     int a; // 指针必须明确找到他的对应地址
  5.     int b;// 指针必须明确找到他的对应地址  
  6.     int *mul=&a;
  7.     int  *cha=&b;
  8.     int sum=sumAndCha(12,14,cha,mul);
  9.     printf("sum=%d,cha=%d\n,mul=%d",sum, *cha,*mul);
  10.     return 0;
  11. }

  12. int sumAndCha(int a,int b, int *cha,int *mul){
  13.     int sum =0;
  14.     sum=a+b;
  15.     *mul=a*b;
  16.     *cha= a-b;
  17.     return sum;
  18. }
复制代码


以后在用的时候,尽量不要用“不知所指”的地址,这样报错是很正常的。编译器会怎么去设置,这个我们无法确定。
作者: 小白一号    时间: 2015-3-17 15:59
定义了两个野指针。没让指针指向变量。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2