簡體   English   中英

當返回類型為int時返回int數組*

[英]returning int array when return type is int *

我有一個這樣描述的功能

int * oddNumbers(l, r, int* result_size){
   static int res[r-l];
   int index = 0;
   while(l < r){
      if(l % 2 != 0){
         res[index] = l;
         index++;
      }
      l++;

   }
   result_size = &index;
   return res;
}

這是我已解決的問題。 我不明白的是如何返回整數數組。 我已經找到了多種方法來做到這一點。 聲明變量靜態,並為該變量分配內存。

我知道執行此操作的行業方法是允許調用方為返回值分配內存。 但是,不幸的是,我只能通過此功能訪問程序的那部分。

任何幫助將不勝感激。

通常通過動態內存分配解決此問題。

在極少數情況下,當您無權訪問malloc / free ,可以滾動自己的內存分配器。 這是一個“僅分配”示例,該示例產生的指針達到特定的預分配限制:

#define MAX_SIZE 65536

int * oddNumbers(int l, int r, int* result_size){
    static int raw[MAX_SIZE];
    static int* current = raw;
    int size = r-l;
    // Make sure that allocation size is positive
    if (size <= 0) {
        return NULL;
    }
    // Make sure we have enough available memory remaining in raw[]
    ptrdiff_t available = &raw[MAX_SIZE] - current;
    if (available < size) {
        return NULL;
    }
    // Allocate "size" elements from raw
    int *res = current;
    current += size;
    int index = 0;
    while(l < r){
        if(l % 2 != 0){
            res[index++] = l;
        }
        l++;
    }
    return res;
}

暫無
暫無

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

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