字符数组的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;
}
returns 有错误...
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++。
接下来...是的,您不能 return 函数中的数组。您可以将此作为解决方法:
结构ArrReturn
{
字符 [5];
};
然后可以 return 编辑此类型。别问我为什么不直接数组
我是从C++的角度来回答的,不是C。
我想要一种最大长度固定的 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;
}
returns 有错误...
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++。
接下来...是的,您不能 return 函数中的数组。您可以将此作为解决方法:
结构ArrReturn { 字符 [5]; };
然后可以 return 编辑此类型。别问我为什么不直接数组
我是从C++的角度来回答的,不是C。