黑马程序员技术交流社区

标题: 求大神解惑 [打印本页]

作者: peiyunfeng123    时间: 2015-7-27 22:32
标题: 求大神解惑
static void calculateAverage(int a, int b, int *c)  
{  
    *c = (a + b);  
}  
  
int main(int argc, const char * argv[])  
{  
  
    int a = 1;  
    int b = 3;  
    int f = 4;  
    int *c = f;  
    calculateAverage(a, b, *c);  
  
    printf("%d\n",c);  
}  


为什么总报错啊?  我觉得没有什么问题啊。它提示的是:Program received signal: "EXC_BAD_ACCESS".肿么办啊?  

作者: 挚兀嘟    时间: 2015-7-28 16:39
static void calculateAverage(int a, int b, int *c)
{
    *c = (a + b);
}

int main(int argc, const char * argv[])
{
   
    int a = 1;
    int b = 6;
    int f = 4;
    int *c = &f; // c是指针,应该接收f的地址
    calculateAverage(a, b, c);// 传值时直接把指针c传过去就可以
   
    printf("%d\n",*c);// *c 取出 指针c的值
}
作者:   张恒宇    时间: 2015-7-28 21:56
访问受保护或者不存在的内存空间,导致返回了一个错误的指针
作者:   张恒宇    时间: 2015-7-28 21:58
1、访问受保护或者不存在的内存空间,导致返回了一个错误的指针;  2、访问未进行内存分配或初始化的内存空间;  3、在对象被释放后仍然采用原来的指针进行访问;  4、采用了[object release]释放对象,但其实对象并未采用 alloc/copy/retain 等形式进行内存分配; 5、其他不合法的内存访问方式;以上是出现这个错误可能的原因!你要打印的C是什么?
作者: 和夏一样狂热    时间: 2015-7-28 22:00
棒啊。。大神。。
作者: 丁铭检    时间: 2015-7-28 22:02
一楼正解。。。
作者: fudanxiaoan    时间: 2015-7-28 22:54
//
//  main.m
//  The pragramming in Objective-C
//
//  Created by 林荣安 on 15/7/28.
//  Copyright (c) 2015年 林荣安. All rights reserved.
//
static void calculateAverage(int a, int b, int *c)
        {
            *c = (a + b);
            
            
            
        }

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
     
            
            int a = 1;
            int b = 3;
            int f = 4;
            int *c = &f;
        
            calculateAverage(a, b, c);
            
            printf("%d\n",*c);
        }
    return 0;
}
改成这样子就OK的了。。。。。。




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