通过函数调用,获取字符串的方法
2014-07-15 17:22
281 查看
通过函数调用的方法,获取字符串,主要有四种方式:
1. 使用堆空间,返回申请的堆地址,注意释放
2. 函数参数传递指针,返回该指针;或者传入指针,对指针的内容进行修改,无需返回,调用函数后,指针的内容已修改。
3. 返回函数内定义的静态变量(共享)
4. 返回全局变量
/*使用堆分配的内存,地址是有效,但这种方式需要注意,必须由使用的地方将返回的地址free掉 */
char *fun1()
{
char* s = (char*)calloc(100, sizeof(char*) );
if (s)
strcpy ( s , "abc " );
return s;
}
/*将地址由入参传入 */
char* fun2(char*s)
{
if (s)
strcpy(s, "abc ");
return s;
}
/*或者用如下函数:在函数中给字符指针赋值*/
void fun3(char*s)
{
if (s)
strcpy(s, "abc ");
}
/*这种方式调用都要注意给s分配的大小是足够。
可以这样: */
char* fun4(char*s, int len)
{
if (s)
{
strncpy(s, "abc", len-1);
s[len-1] = 0;
}
return s;
}
/*或可以如下: */
void fun5(char*s, int len)
{
if (s)
{
strncpy(s, "abc", len-1);
s[len-1] = 0;
}
}
/*或使用局部静态变量 */
char* fun6()
{
static char s[100];
strcpy(s, "abc ");
return s;
}
/*这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的。可以这样:*/
const char* fun7()
{
static char s[100];
strcpy(s, "abc ");
return s;
}
/*还有一种是使用全局变量 */
char g_s[100];
char* fun8()
{
strcpy(g_s, "abc ");
return g_s;
}
/*同样的,也要注意这个变量可存储的最大空间。*/
1. 使用堆空间,返回申请的堆地址,注意释放
2. 函数参数传递指针,返回该指针;或者传入指针,对指针的内容进行修改,无需返回,调用函数后,指针的内容已修改。
3. 返回函数内定义的静态变量(共享)
4. 返回全局变量
/*使用堆分配的内存,地址是有效,但这种方式需要注意,必须由使用的地方将返回的地址free掉 */
char *fun1()
{
char* s = (char*)calloc(100, sizeof(char*) );
if (s)
strcpy ( s , "abc " );
return s;
}
/*将地址由入参传入 */
char* fun2(char*s)
{
if (s)
strcpy(s, "abc ");
return s;
}
/*或者用如下函数:在函数中给字符指针赋值*/
void fun3(char*s)
{
if (s)
strcpy(s, "abc ");
}
/*这种方式调用都要注意给s分配的大小是足够。
可以这样: */
char* fun4(char*s, int len)
{
if (s)
{
strncpy(s, "abc", len-1);
s[len-1] = 0;
}
return s;
}
/*或可以如下: */
void fun5(char*s, int len)
{
if (s)
{
strncpy(s, "abc", len-1);
s[len-1] = 0;
}
}
/*或使用局部静态变量 */
char* fun6()
{
static char s[100];
strcpy(s, "abc ");
return s;
}
/*这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的。可以这样:*/
const char* fun7()
{
static char s[100];
strcpy(s, "abc ");
return s;
}
/*还有一种是使用全局变量 */
char g_s[100];
char* fun8()
{
strcpy(g_s, "abc ");
return g_s;
}
/*同样的,也要注意这个变量可存储的最大空间。*/
相关文章推荐
- 在C#中调用EVAL函数方法,通过字符串计算
- SQL中获取一个长字符串中某个字符串出现次数的简单方法(函数)
- 通过silktest调用c#写的工具获取dll文件信息的方法
- 通过函数参数获取新创建指针的三种方法
- 通过strlen()方法和循环遍历分别获取指针指向的字符串长度
- 通过字符串变量动态打开窗体并动态调用其方法
- asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
- JAVA方法中通过调用URL来获取其返回的内容
- [置顶] C#中通过调用webService获取上网IP地址的区域的方法
- C#中通过调用webService获取上网IP地址的区域的方法
- 根据字符串名称动态调用Python的函数和对象方法
- web developer tips (83):通过反射从堆栈里获取调用的方法名称
- php获取字符串的编码格式的方法(函数)
- web developer tips (83):通过反射从堆栈里获取调用的方法名称
- 通过js来获取包含中文字符的字符串的长度的方法
- web developer tips (83):通过反射从堆栈里获取调用的方法名称
- 通过Python的内置字符串处理函数来处理字符串的方法和整理
- 通过调用类中的各种方法我们可以获取不同的时间
- 根据类名字符串实例化类,并调用类的方法或函数 转
- JavaScript 通过字符串参数(函数名),调用对应的函数