第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從函數(shù)返回多個(gè)值

從函數(shù)返回多個(gè)值

C
藍(lán)山帝景 2019-07-20 14:46:29
從函數(shù)返回多個(gè)值有人能告訴我如何從函數(shù)返回多個(gè)值嗎?請(qǐng)舉例說明一下?
查看完整描述

3 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

您在這里的選擇是返回一個(gè)包含您喜歡的元素的結(jié)構(gòu),或者使用函數(shù)來處理帶有指針的參數(shù)。

/* method 1 */struct Bar{
    int x;
    int y;};struct Bar funct();struct Bar funct(){
    struct Bar result;
    result.x = 1;
    result.y = 2;
    return result;}/* method 2 */void funct2(int *x, int *y);void funct2(int *x, int *y){
    /* dereferencing and setting */
    *x  = 1;
    *y  = 2;}int main(int argc, char* argv[]) {
    struct Bar dunno = funct();
    int x,y;
    funct2(&x, &y);

    // dunno.x == x
    // dunno.y == y
    return 0;}


查看完整回答
反對(duì) 回復(fù) 2019-07-20
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

你不能直接這么做。您的選項(xiàng)是將多個(gè)值包裝到一個(gè)結(jié)構(gòu)中,或者將它們作為指針參數(shù)傳遞給函數(shù)。

G.

typedef struct blah{
    int a;
    float b;} blah_t;blah_t my_func(){
    blah_t blah;
    blah.a = 1;
    blah.b = 2.0f;
    return blah;}

或:

void my_func(int *p_a, float *p_b){
    *p_a = 1;
    *p_b = 2.0f;}


查看完整回答
反對(duì) 回復(fù) 2019-07-20
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

首先,后退一步,詢問為什么需要返回多個(gè)值。如果這些值在某種程度上不相關(guān)(無論是功能上的還是操作上的),那么您需要停止并重新考慮您正在做的事情。

如果各種數(shù)據(jù)項(xiàng)是較大的復(fù)合數(shù)據(jù)類型的一部分(例如郵件地址,或銷售訂單中的行項(xiàng),或由多個(gè)屬性描述的其他類型),則定義一個(gè)struct類型來表示單值這種綜合類型:

struct addr { // struct type to represent mailing address
  char *name;
  int streetNumber;
  char *streetName;
  char *unitNumber; 
  char *city;
  char state[3];
  int ZIP;};struct addr getAddressFor(char *name) {...}struct point2D {
  int x;
  int y;};struct polygon2D {
  size_t numPoints;
  struct point2D *points;};struct point2D getOrigin(struct polygon2D poly) {...}

定義一個(gè)結(jié)構(gòu)來收集與彼此無關(guān)的隨機(jī)項(xiàng);這只會(huì)給您和任何需要維護(hù)代碼的人帶來混亂。

如果數(shù)據(jù)項(xiàng)在功能上不相關(guān),而是以某種方式操作上相關(guān)(例如,數(shù)據(jù)加上狀態(tài)標(biāo)志加上關(guān)于操作或項(xiàng)的元數(shù)據(jù),作為單個(gè)輸入操作的一部分),然后使用多個(gè)可寫參數(shù)。最明顯的例子是*scanf()函數(shù)在標(biāo)準(zhǔn)庫中。還有strtod()strtol()函數(shù),該函數(shù)轉(zhuǎn)換數(shù)字的字符串表示形式;它們返回轉(zhuǎn)換后的值,但它們也編寫未轉(zhuǎn)換為單獨(dú)參數(shù)的第一個(gè)字符:

char *str = "3.14159";double value;char *chk;value = strtod(str, &chk);if (!isspace(*chk) && *chk != 0)
  printf("Non-numeric character found in %s\n", str);

您可以將這些方法結(jié)合在一起;下面是一個(gè)受我目前正在做的工作啟發(fā)的示例:

typedef enum {SUCCESS, REQ_GARBLED, NO_DATA_OF_TYPE, EMPTY, ERROR} Status;typedef struct bounds {...} Bounds; tyepdef struct metadata {
  size_t bytesRead;
  size_t elementsRead;
  size_t rows;
  size_t cols;} Metadata;typedef struct elevations {
  size_t numValues;
  short *elevations;} Elevations;Elevations elevs;Metadata meta;Bounds b = ...; // set up search boundaryStatus stat = getElevationsFor(b, &elevs, &meta);

我請(qǐng)求提升數(shù)據(jù)的服務(wù)返回值的一維序列;數(shù)組的維度作為元數(shù)據(jù)的一部分返回。


查看完整回答
反對(duì) 回復(fù) 2019-07-20
  • 3 回答
  • 0 關(guān)注
  • 484 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)