Nie_balck
Nie_balck
采纳率100%
2019-03-23 17:42 阅读 480

萌新求解!!!!!vs2017写c语言,函数参数间不能传址吗?

最近在学C语言,也就是粗略学一下,培养一下自己的逻辑思维,毕竟C语言是所有语言基础嘛,用的是vs2017,想提前熟练这个程序员最常用的编译器

有时候也会遇上兼容性问题,但一般csdn上一搜就能解决问题

但是在学到函数参数的时候,问题出现了,在实现函数参数传址的时候,发现实参的址并不能传给实参,请大佬们看一下是编译器问题还是我编写问题,有没有解决方案

举个简单的例子

#include<stdio.h>

float average(int b[10]);
void main()
{
    float q;
    int a[10],p;
    for (p = 0; p <= 9; p++)
    {
        scanf_s("%d", &a[p]);
    }
    q=average(a[10]);
    printf("%f", q);
    system("pause");
}
float average(int b[10])
{
    float ave;
    int i,sum;
    for (i = 0,sum=0; i <= 9; i++)
    {
        sum += b[i];
    }
    ave = sum / 10.0;
    return ave;
}

在运行这个程序的时候

图片说明

a的地址是0x0053fd68

继续运行

图片说明

b还是未赋址状态

另外

图片说明

显示读取访问权限冲突

萌新求解!!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    Nie_balck Nie_balck 2019-03-23 17:56

    emmmm
    我逗比了.......
    q=average(a[10]);
    这里错了应该是
    q=average(a);
    啊哈哈哈哈哈让大家看笑话了

    点赞 评论 复制链接分享
  • riyuejinghua88 riyuejinghua88 2019-03-23 17:57

    q=average(a[10]);
    这一句改成q=average(a);试试,数组名才是首地址。你之前的实参a[10]是一个元素,不是地址。

    点赞 1 评论 复制链接分享

相关推荐