簡體   English   中英

字符數組的typedef並在函數中使用

[英]typedef of character array and use in functions

我想要一種具有固定最大長度的cstring類型,比方說5。如果可能,我也希望能夠使用標准cstring函數。 但是與此有關,我在函數參數方面遇到很多問題。 我還不是很熟悉typedef,但是我不確定這是錯誤的方法,還是可能只是缺少一些東西。 C ++(mingw-w64)

typedef char Name[5];
std::ostream& operator<<(std::ostream& os, Name& car)
{
    os << car;
    return os;
}

void Change(Name str)
{
    str[2] = '0';
}
Name ChangeRtn(Name str)
{
    str[2] = '1';
    return str;
}
void ChangeCat(Name * strp)
{
    strcat(strp,"3");
}
int main ()
{
    Name test = "abcd";
    Change(test);
    std::cout << test  << std::endl;

    Name test2 = ChangeRtn(test);
    std::cout << test2 << std::endl;

    Name * test3;
    //*test3 = "12"; //incompatible types... make a operator= func
    strcpy (*test3,"12"); //a temp replacement of operater=?
    ChangeCat(test3);
    std::cout << test3 << std::endl;

    return 0;
}

錯誤返回...

typedef.cpp:15:24: error: 'ChangeRtn' declared as function returning an array
 Name ChangeRtn(Name str)
                        ^
typedef.cpp: In function 'void ChangeCat(char (*)[5])':
typedef.cpp:22:17: error: cannot convert 'char (*)[5]' to 'char*' for argument '1' to 'char* strcat(char*, const char*)'
  strcat(strp,"3");
                 ^
typedef.cpp: In function 'int main()':
typedef.cpp:30:29: error: 'ChangeRtn' was not declared in this scope
  Name test2 = ChangeRtn(test);
                             ^

首先,您需要選擇語言。 C或C ++。

下一步...是的,您不能從函數返回數組。 您可以作為解決方法:

struct ArrReturn {char arr [5]; };

然后可以返回此類型。 不要問我為什么,而不是直接數組。

我是從C ++而不是C的角度回答。

暫無
暫無

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

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