黑马程序员技术交流社区

标题: 求指教哪里错 [打印本页]

作者: dawn.dai    时间: 2014-4-26 00:12
标题: 求指教哪里错
本帖最后由 dawn.dai 于 2014-4-26 15:13 编辑

int sumAndMinus(int a, int b, int *m){
   
    *m =a-b;
    return a+b;
   
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        int *minus = 0;
        int sum =sumAndMinus(10, 5, minus);
        
        printf("minus =%d,sum =%d\n",*minus,sum);
    }
    return 0;
}

作者: 周宇华    时间: 2014-4-26 01:15
  1. int sumAndMinus(int a, int b, int *m){
  2.    
  3.     *m =a-b;
  4.     return a+b;
  5.    
  6. }

  7. int main(int argc, const char * argv[])
  8. {
  9.    
  10.     @autoreleasepool {
  11.         int minus = 0; // 空地址无法使用,改成定义变量,再取地址传进函数
  12.         int sum =sumAndMinus(10, 5, &minus);
  13.         
  14.         printf("minus =%d,sum =%d\n",minus,sum);
  15.     }
  16.     return 0;
  17. }
复制代码

作者: gmadong@163.com    时间: 2014-4-26 08:25
本帖最后由 gmadong@163.com 于 2014-4-26 08:29 编辑

//你的写法

int sumAndMinus(int a, int b, int *m){
   
    *m =a-b;
    return a+b;
   
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        int *minus = 0;//这是定义一个指向int的指针所以 应该int minus =0;
        int sum =sumAndMinus(10, 5, minus);//要在另一个函数中改变一个数的值应该传指针过去int sum =sumAndMinus(10, 5, &minus);
        
        printf("minus =%d,sum =%d\n",minus,sum);
    }
    return 0;
}




//正确的写法
int sumAndMinus(int a, int b, int *m){
   
    *m =a-b;
    return a+b;
   
}

int main(int argc, const char * argv[])
{
   
    @autoreleasepool {
        int minus = 0;
        int sum =sumAndMinus(10, 5, &minus);
        
        printf("minus =%d,sum =%d\n",minus,sum);
    }
    return 0;
}

作者: stevenzhao1977    时间: 2014-4-26 14:08
本帖最后由 stevenzhao1977 于 2014-4-26 14:21 编辑

指针指向变量的地址,则*p 可以赋值;
如果*p 指向常量的地址,如  char *p =”hello world "==> *p 不能赋值;
int *p=1 ===> xcode 可以编译,但不能运行,
因为 字符串常量有专门的内存地址 存放,p可以指向那里
但是 int 1 没有专门的内存地址存放,p 没有地方可以指向

作者: dawn.dai    时间: 2014-4-26 15:14
谢谢各位




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