c語言中函式返回值可以是陣列 字串和結構體嗎?

時間 2023-05-09 10:24:05

1樓:匿名使用者

1、ansi c語言標準,明確規定 陣列型別和函式型別不可以做為返回值。

解決這種返回值的方法是通過指標來間接返回,即使用陣列指標和函式指標。這可以做為c語言引入指標的另乙個理由。

2、字串是陣列的一種,是字元陣列,所以同樣不可以作為返回值。

3、結構體型別可以做為返回值,c語言設計者當時引入struct結構體的概念,目的是為了增加一種建立c語言新型別的機制, 換句話說它希望通過struct建立的型別,像內建的int float型別一樣使用方便。

2樓:王囧囧

返回陣列的話要注意生存期的問題:

1.函式可以返回陣列指標,但並非陣列中的每一項,因此算是乙個值。

2.函式中定義的區域性陣列在函式退出時會被銷毀,返回陣列指標沒有意義。

3.全域性陣列的話,在函式中做得更改會被保留,一般不用刻意再次返回陣列指標了。

分配的記憶體,可以返回其位址,此段記憶體是在堆上分配的,函式退出時不會銷毀。

3樓:匿名使用者

因為陣列會自動退化成指標,c字串實際上也是陣列,因此不能作為c函式的返回值,返回結構體應該是沒問題的……

4樓:匿名使用者

返回值只能是乙個值沒有錯,陣列可以返回,但是返回的只是陣列的首位址,結果是位址,還是乙個值,除非你返回的是陣列裡基本個元素。

5樓:匿名使用者

返回值可以是字串(c++有string類),結構體,陣列的指標。

6樓:桓沛凝

可以的,返回的是一種型別。陣列,字串,結構體都是型別。

c語言系列之c語言如何返回字串陣列

7樓:西安it優就業

c語言實現返回乙個字串陣列,是沒有這種功能的,但是可以用指向陣列的指標來實現:

解釋:

char **p 這個p就是指向陣列的指標,它指向乙個陣列的起始位址。

想要引用裡面的陣列時,直接使用p[i] 即可。

我們知道c語言裡面的各種陣列,本質上都是指標,並且函式其實也是不能把陣列當作引數的,實際上都是把陣列的位址傳進去了,實際上就是指向陣列位址的指標。

實現

這樣返回的p就是指向陣列的指標了,實際上就是乙個字串陣列。

函式解釋:函式返回乙個字串陣列,實際上就是指向陣列的指標,傳進去的是返回的陣列的大小以及乙個字串陣列,用來處理資料用。

c語言中函式呼叫與返回值的關係是什麼

函式呼叫和返回值的關係其實和賦值運算的道理是一樣的只是,函式將計算機過程封裝,實現複雜的計算過程和提供良好的 重用。int sum int arg1,int arg2 函式原型int x x sum 1,3 呼叫函式,其中這裡的1,3我們稱為形式引數,它告訴函式要怎麼做。而函式是負責要做什麼 還是拿...

在c語言中主函式是不是必須要有返回值

main 函式的返回值型別必須是 int 這樣返回值才能傳遞給程式的啟用者 如作業系統 如果 main 函式的最後沒有寫 return 語句的話,c99 規定編譯器要自動在生成的目標檔案中 如 exe 檔案 加入return 0 表示程式正常退出。在c語言標準中強制要求main函式的返回值型別為in...

c語言中,返回值是什麼意思

敖子鹿妍晨 在乙個函式定義中,函式體之前的所有部分稱為函式頭,它給出了該函式的返回型別 每個引數的次序和型別等函式原型資訊,所以當沒有專門給出函式原型說明語句時,系統就從函式頭中獲取函式原型資訊。乙個函式的原型語句就是其函式頭的乙個拷貝,當然要在最後加上語句接上結束符分號。函式原型語句與函式頭也有細...