双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

俩段代码返回指针问题。

James_ht James_ht 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
第一题:
char *GetMemory(void)
{ char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什幺样的结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。

第二题:
不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ ) NULL ;
return address ;
}
我在看 高质量C++/C编程指南 有上面的二个题目.第一题和第二题都是返回一个指针.但是第一题中答案说:GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。
第二题也是返回的指针,难道不怕发生这样的问题吗?还是我的理解有错误。
谢谢!!
...全文

相关推荐

C语言 用指针作为函数返回值详解

C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数。下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include #include char *strlong(char *str1, char *str2){ if(strlen(str1) >= strlen(str2)){ return str1; }else{ return str2; } } int main(){ char str1[30], str2[30], *str; gets(str1);

weixin_38670983

深入解析函数指针与返回函数的指针

以下是对函数指针与返回函数的指针进行了详细的分析介绍,需要的朋友可以过来参考下

weixin_38574410

C++中返回指向函数的指针示例

在C++中,函数的形参可以是指向函数的指针,函数也可以返回函数的指针。例如:int (*ff(int)) (int *,int);表示:ff(int)是一个函数,带有一个int型的形参,该函数返回int (*) (int *,int),它是一个指向函数的指针,所指向的函数返回int型并带有两个分别是Int*和int型的形参。使用typedef可使得定义更加易懂:typedef int (*PF) (int *,int);PF ff(int);下面给出一个例子: 代码如下:#include<iostream>using namespace std; void fff(int *i,int j){

weixin_38659955

cpp代码-函数返回值:值传递 指针传递 引用传递 (返回值 返回指针 返回引用) int Fun(int a); int *Fun(int a); int &Fun(int a); (别名)

cpp代码-函数返回值:值传递 指针传递 引用传递 (返回值 返回指针 返回引用) int Fun(int a); int *Fun(int a); int &Fun(int a); (别名)

weixin_38524139

最大子段和问题的动态规划求解

最大子段和问题的动态规划求解最大子段和问题的动态规划求解最大子段和问题的动态规划求解最大子段和问题的动态规划求解

Hellow
评论 11
收藏 已收藏
分享
返回顶部
James_ht
VC/MFC 16,551 成员 421,605 内容