将指针从函数返回到main

时间:2015-02-10 23:20:17

标签: c arrays function-pointers

编写程序以查找具有10个整数的数组中最大元素的地址,我的代码是:

int* Largest(int *array, int size);
int main()
{
   int *Ptr, array[10];
   int r, c, num = 1;
   for(r = 0; r < 10; r++) {
       array[r] = num + 1;
   }

   Ptr = Largest(array, 10);
   printf("%p", Ptr);
   return 0;
}

int* Largest(int *array, int size)
{
    int *largest, r;
    for(r = 0; r < size; r++) {
       if(r = 0) {
          largest = &array[0];
       }
       else {
           if(array[r] > *largest) {
               largest = &array[r];
           }
       }
    }
    return largest;
}

编译时我没有收到任何错误或警告但是程序没有做任何事情并且被Windows自动停止。

2 个答案:

答案 0 :(得分:2)

  1. 您可能至少包含stdio.h

  2. 所需的标题
  3. 您的作业很可能不应该

    if(r = 0)
    

    我认为这应该是

    if (r == 0)
    

    我看到有些人通过

    来防止出现这种问题
    if (0 == r)
    

    因为这样,如果使用=运算符,程序将无法编译,无论如何这不是一个非常好的方法,而应该

    larget = &array[0];
    for (r = 1 ; r < size ; ++r)
    

    这显然会更有效率。

  4. 至于程序停止,您可以尝试运行cmd.exe窗口并直接从那里执行程序。

    注意if (condition1) {} else if (condition2) {}在c中有效,无需if (condition1) {} else {if (condition2) {}}

答案 1 :(得分:-1)

当控件从最大()回来时 然后堆栈帧现在在内存中清晰。 然后系统寻找包含地址的ptr但是找不到任何东西,所以系统终止这个程序