C语言中函数返回数组;数组与指针的区别

来源:互联网 发布:暗黑团队毁魔兽 知乎 编辑:程序博客网 时间:2024/05/02 00:55

首先说下数组与指针的区别
char a[] = “abcdefg”;
char *p = “abcdefg” ;
1 a就是数组的首地址
2 数组的内容可以修改,指针的内容不可以修改
在ANSI C中,初始化指针是所创建的字符串时常量,被定义为只读,如果试图通过指针修改这个字符串的值,程序就会出现为定义的行为。
意思就是指针定义了一个全局变量而数组定义的是局部变量


函数如何返回数组
1.C语言可以用指针返回数组
比如
char *test( )
{
char *temp=”abcd”;
return temp;
}
char *test()
{
static char temp[20]=”abcd”;//存为静态区
return temp;
}
第三种是用堆存,暂时用不到所以没看,可完善;
谨记:永远不要从函数中返回局部自动变量的地址

2.用结构体作为返回值来传递数组
struct rec
{
char buff[30];
};

struct rec test(char *temp)
{
struct rec r;
strcpy(r.buf,temp);
return r;
}

**两点注意:
1、数组之间的赋值不要直接,即不要直接将数组A赋给数组B,而是要用strcpy(字符型数组)或者memcpy(非字符型数组)。
2、用结构体定义变量和函数时不要忘了结构体名(上面程序的ret)。**

阅读全文
0 0
原创粉丝点击