W*******o 发帖数: 301 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: WEKingpro (口味蛇), 信区: JobHunting
标 题: 问一道C++的题目。
发信站: BBS 未名空间站 (Sat Jan 6 21:09:12 2007)
char* getbuf() {
char buff[8]="abcdefg";
return (char*)buff;
}
void main() {
char* b, q;
b = getbuf();
q = *b;
printf("%c\n", q);
}
输出结果中,q除了等于a, 还有可能等于什么? | k****f 发帖数: 3794 | 2 buff是在栈里的,退出getbuf,应该就不是有效的
【在 W*******o 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: WEKingpro (口味蛇), 信区: JobHunting : 标 题: 问一道C++的题目。 : 发信站: BBS 未名空间站 (Sat Jan 6 21:09:12 2007) : char* getbuf() { : char buff[8]="abcdefg"; : return (char*)buff; : } : void main() { : char* b, q;
| W*******o 发帖数: 301 | 3 it is warned by compiler, but still can get what it suppose to. | S****t 发帖数: 1186 | | r********g 发帖数: 1351 | 5 buff是函数内局部变量,返回时分配的空间已被系统收回。
你返回的内容没有变只是因为还没有覆盖而已。 |
|