A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//设计一个函数
//  找出数组中的最大值.c
//  
//
//  Created by Mac on 14/11/19.

#include <stdio.h>

int maxofArray(int Array[] , int length)
{
    int size = sizeof(Array);
   
    //定义一个变量存储最大值(默认就是首元素)
    int max = Array[0];
    for (int i = 0; i<length; i++)
    {
       printf("Array[%d]==%d\n",i ,Array[i]);
        if (Array[i]>max)
        {
            max = Array[i];
        }
    }
    return max;
}
int main()
{
    int ages[] = {11,90, 67, 100, 78, 60, 70, 89, 100};
    int size = sizeof(ages);
    printf("ages==%d\n", size);
    int max = maxofArray(ages, sizeof(ages)/sizeof(int));
    printf("%d\n",max);
    return 0;

}

评分

参与人数 1黑马币 +1 收起 理由
星河鹭起 + 1

查看全部评分

20 个回复

倒序浏览
提示错误如下

MacdeiMac:1119晚上 Mac$ cc 找出数组中的最大值.c
找出数组中的最大值.c:11:22: warning: sizeof on array function parameter
      will return size of 'int *' instead of 'int []' [-Wsizeof-array-argument]
    int size = sizeof(Array);
                     ^
找出数组中的最大值.c:9:20: note: declared here
int maxofArray(int Array[] , int length)
                   ^
1 warning generated.
回复 使用道具 举报
我英文也不怎么样,不过根据我所学的,它这里意思是让你传入的数组改为传入指针类型,你可以回去看一下视频关于数组与指针的关系!
回复 使用道具 举报
int maxofArray(int *Array, int length)
这里改指针,你对指针还是了解的不够啊
回复 使用道具 举报
这么牛。。。。赞一个
回复 使用道具 举报
weizhang00 发表于 2014-11-19 08:18
int maxofArray(int *Array, int length)
这里改指针,你对指针还是了解的不够啊

看了好几次,自己形成了一定的思维模式,就是看不懂。谢谢了啊 我试试:lol
回复 使用道具 举报
天空总是很蓝 发表于 2014-11-20 23:10
看了好几次,自己形成了一定的思维模式,就是看不懂。谢谢了啊 我试试 ...

大概给你说一下好了,* &指针和地址符是配套使用的
数组本身就是地址,所以&a和a[]是一样的,指针的简单理解就是指向某个地址
所以你的函数原型接收的是一个数组的地址
就好像我给写你封信,你光收到我的地址,然后拿我的地址在函数里处理
回复 使用道具 举报 1 0
int maxofArray(int *Array, int length)
这里面需要指针的
回复 使用道具 举报
张芳涛 发表于 2014-11-20 23:36
int maxofArray(int *Array, int length)
这里面需要指针的

嗯!:lol你回来了
回复 使用道具 举报
weizhang00 发表于 2014-11-20 23:35
大概给你说一下好了,* &指针和地址符是配套使用的
数组本身就是地址,所以&a和a[]是一样的,指针的简单 ...

谢了啊:victory:
回复 使用道具 举报

你的技术分这么多了。。。。
回复 使用道具 举报
hityu 中级黑马 2014-11-20 23:58:11
12#
首先,你的int size = sizeof(Array);事没有用的,因为你的 maxofArray()函数已经传入length值了;关于warning,是因为编译器提示你,你以数组名作为参数传递给函数,实际传递的是一个指针,所以你这么写size的值是指针的大小而不是你期望的数组的大小,仅仅是个警告而已,希望能够帮助到你。
回复 使用道具 举报
weizhang00 发表于 2014-11-19 08:18
int maxofArray(int *Array, int length)
这里改指针,你对指针还是了解的不够啊
  1. MacdeiMac:1119晚上 Mac$
  2. MacdeiMac:1119晚上 Mac$
  3. MacdeiMac:1119晚上 Mac$ cc 找出数组中的最大值.c
  4. MacdeiMac:1119晚上 Mac$ ./a.out
  5. ages==36
  6. Array[0]==11
  7. Array[1]==90
  8. Array[2]==67
  9. Array[3]==100
  10. Array[4]==78
  11. Array[5]==60
  12. Array[6]==70
  13. Array[7]==89
  14. Array[8]==100
  15. 100
  16. MacdeiMac:1119晚上 Mac$
  17. 改了就好了,谢谢了,
复制代码
回复 使用道具 举报
hityu 发表于 2014-11-20 23:58
首先,你的int size = sizeof(Array);事没有用的,因为你的 maxofArray()函数已经传入length值了;关于wa ...

我试试改改这种方法行不行 多试几种
回复 使用道具 举报
张芳涛 发表于 2014-11-20 23:57
你的技术分这么多了。。。。

我用黑马币兑换了一些,然后论坛管事们给发了两个,
回复 使用道具 举报
呵呵,同学,下次遇到这问题截个图,这样被人容易观察
回复 使用道具 举报
米家小九 来自手机 中级黑马 2014-11-22 06:21:47
17#
努力学习中
回复 使用道具 举报
邵起 中级黑马 2014-11-22 08:07:27
18#
weizhang00 发表于 2014-11-20 23:35
大概给你说一下好了,* &指针和地址符是配套使用的
数组本身就是地址,所以&a和a[]是一样的,指针的简单 ...

说的很到位!
回复 使用道具 举报
调用函数的时候,你将数组传给形参,实际上是将数组地址传给了形参,而不是值传递。所以你定义求最大值的函数的时候int maxofArray(int Array[] , int length),形参定义了int Array[]实际上想当于定义了一个指针变量。
回复 使用道具 举报
     int size = sizeof(Array);
运行的时候根本不知道Array的大小,传进来的只是指针,认为有多长就有多长。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马