簡體   English   中英

將指針從函數返回到main

[英]Returning a pointer from a function to main

編寫程序以查找具有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自動停止。

  1. 您可能沒有包含至少需要stdio.h標頭

  2. 您有一項作業,很可能不應該

     if(r = 0) 

    我認為這應該是

     if (r == 0) 

    我已經看到有人通過這樣做來防止此類問題

     if (0 == r) 

    因為這樣,如果使用=運算符,程序將無法編譯,無論如何,這不是一個很好的方法,相反,您應該

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

    這顯然會更有效。

至於程序停止,您可以嘗試運行cmd.exe窗口並直接從那里執行程序。

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

當控件從maximum()返回時,現在在內存中清除了的堆棧幀。 然后系統尋找包含地址的ptr但找不到任何東西,因此系統終止了該程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM