可以使用malloc创建typedef或定义char指针吗?

时间:2014-02-18 00:22:54

标签: c

我想要做的是让string256像:char* s = (char*)malloc(256);

string256 s; /* this is what Iam trying to do */


char* s = (char*) malloc(256); /* this is how it looks in real life */

并使用它

strncpy(s, "__test__", 9)

s[9] = 0x00;

P.S。 typedef或定义或函数代码长度无关紧要。只关键字256; 我不会忘记使用免费或错误检查;

完整代码如下所示:

 __Free_String_if_Flag_true __Zero_Memory __check_for_Errors __string_256 string256

并使用它

string256 s;

3 个答案:

答案 0 :(得分:2)

简而言之,没有。

typedef定义类型的名称。 char* s = (char*) malloc(256);是变量声明,而不是类型。

你可能会用宏来实现类似的东西,但我强烈反对它(一开始,它会掩盖在某些时候需要free的事实。)

答案 1 :(得分:2)

您可以创建一个char数组的typedef:

typedef char char256[256];

char256 s ;
s[255] = '\0' ;

变量将在超出范围时停止存在,但如果您希望持久化,则可以将其设置为全局变量。

答案 2 :(得分:0)

关于 ...或定义... 的问题部分:
简而言之 - 是的,您可以 :(部分取消其他一些评论/答案的例外)
然而 ,我也同意那些表明使用#defines进行此类调用的最佳形式的答案。 (但你可以这样做)

已修改 (已从宏中删除“;”)

#define string256(s) char *(s) = malloc(256)  
//...  
string256(s);  //use parenethesis
/...  
strcpy(s, "yes I can");    

s 现在包含“是的我可以” 是空终止的(strcpy()那个)

不要忘记为free(...);

创建一个宏