首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于子函数返回数组名的有关问题

2012-03-26 
关于子函数返回数组名的问题代码如下:C/C++ code#includestdio.hchar* check(void){char p[] abc\n

关于子函数返回数组名的问题
代码如下:

C/C++ code
#include<stdio.h>char* check(void){    char p[] = "abc\n";    return p;}int main(){    char *temp = check();    printf("%c\n",*temp);    printf("%s\n",temp);    return 0;}


打印的结果是a和乱码。我想知道为什么,谢了.....

[解决办法]
局部指针的话,通常人都认为指向的局部变量失效,那该地址存的是垃圾值,其实不然,系统要在接到你要操作这个内存的指令后才会把它清0,它并不是立刻清0,就好比文件一样,并不是接到指令立刻把文件全清0,只是标记告诉系统这个空间可用,文件一般是在的。
数组也是一样,下面有个小实例,第一个能正常输入,第二个则不行,因为在它之前操作了这块内存,操作了这块内存。
C/C++ code
#include "stdafx.h"char * Cstr(void){    char a[10] = "like";    return a;    }int main(void) {     char *a=Cstr();    printf("%c\n",*(a+1));    printf("%c\n",*(a+1));    return 0; } 

热点排行
Bad Request.