C++里面说函数的返回值不可以返回指向局部变量的指针。这个是绝对的么? [问题点数:40分,结帖人u012186949]

Bbs1
本版专家分:0
结帖率 42.86%
Bbs7
本版专家分:17631
版主
Blank
优秀版主 2016年10月优秀小版主
优秀小版主
Bbs9
本版专家分:93003
Blank
进士 2008年 总版技术专家分年内排行榜第五
Blank
铜牌 2007年6月 总版技术专家分月排行榜第三
Blank
红花 2007年6月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2008年5月 C/C++大版内专家分月排行榜第二
2008年3月 C/C++大版内专家分月排行榜第二
2007年10月 C/C++大版内专家分月排行榜第二
2007年9月 C/C++大版内专家分月排行榜第二
2007年6月 C/C++大版内专家分月排行榜第二
2007年5月 C/C++大版内专家分月排行榜第二
Bbs4
本版专家分:1103
Blank
红花 2018年7月 VC/MFC大版内专家分月排行榜第一
2017年10月 VC/MFC大版内专家分月排行榜第一
2016年3月 VC/MFC大版内专家分月排行榜第一
2014年10月 VC/MFC大版内专家分月排行榜第一
2014年9月 VC/MFC大版内专家分月排行榜第一
2014年7月 VC/MFC大版内专家分月排行榜第一
2014年6月 VC/MFC大版内专家分月排行榜第一
2014年5月 VC/MFC大版内专家分月排行榜第一
2014年4月 VC/MFC大版内专家分月排行榜第一
2014年2月 VC/MFC大版内专家分月排行榜第一
2013年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2019年7月 VC/MFC大版内专家分月排行榜第二
2019年6月 VC/MFC大版内专家分月排行榜第二
2019年5月 VC/MFC大版内专家分月排行榜第二
2019年4月 VC/MFC大版内专家分月排行榜第二
2019年3月 VC/MFC大版内专家分月排行榜第二
2018年10月 VC/MFC大版内专家分月排行榜第二
2018年9月 VC/MFC大版内专家分月排行榜第二
2018年8月 VC/MFC大版内专家分月排行榜第二
2018年5月 VC/MFC大版内专家分月排行榜第二
2017年12月 VC/MFC大版内专家分月排行榜第二
2017年6月 VC/MFC大版内专家分月排行榜第二
2017年5月 VC/MFC大版内专家分月排行榜第二
2017年1月 VC/MFC大版内专家分月排行榜第二
2016年11月 VC/MFC大版内专家分月排行榜第二
2016年4月 VC/MFC大版内专家分月排行榜第二
2014年11月 VC/MFC大版内专家分月排行榜第二
2014年1月 VC/MFC大版内专家分月排行榜第二
2013年10月 VC/MFC大版内专家分月排行榜第二
2013年9月 VC/MFC大版内专家分月排行榜第二
2013年6月 VC/MFC大版内专家分月排行榜第二
2013年4月 VC/MFC大版内专家分月排行榜第二
2012年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2018年11月 VC/MFC大版内专家分月排行榜第三
2018年6月 VC/MFC大版内专家分月排行榜第三
2018年4月 VC/MFC大版内专家分月排行榜第三
2018年3月 VC/MFC大版内专家分月排行榜第三
2018年2月 VC/MFC大版内专家分月排行榜第三
2018年1月 VC/MFC大版内专家分月排行榜第三
2017年11月 VC/MFC大版内专家分月排行榜第三
2017年9月 VC/MFC大版内专家分月排行榜第三
2017年8月 VC/MFC大版内专家分月排行榜第三
2017年4月 VC/MFC大版内专家分月排行榜第三
2016年12月 VC/MFC大版内专家分月排行榜第三
2016年10月 VC/MFC大版内专家分月排行榜第三
2016年2月 VC/MFC大版内专家分月排行榜第三
2015年10月 VC/MFC大版内专家分月排行榜第三
2015年7月 VC/MFC大版内专家分月排行榜第三
2012年10月 VC/MFC大版内专家分月排行榜第三
Bbs5
本版专家分:3614
Bbs6
本版专家分:9048
Blank
蓝花 2017年8月 C/C++大版内专家分月排行榜第三
Bbs5
本版专家分:3614
Bbs6
本版专家分:5193
Bbs3
本版专家分:949
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:5193
Bbs3
本版专家分:863
Bbs1
本版专家分:0
Bbs3
本版专家分:547
Bbs5
本版专家分:2506
Bbs7
本版专家分:12362
Blank
蓝花 2014年7月 C/C++大版内专家分月排行榜第三
2014年6月 C/C++大版内专家分月排行榜第三
Bbs6
本版专家分:8824
Bbs3
本版专家分:594
Bbs3
本版专家分:927
Bbs2
本版专家分:268
Bbs1
本版专家分:0
Bbs1
本版专家分:0
c 函数 返回局部变量
[转自]       http://blog.csdn.net/haiwil/article/details/6691854/#comments 一般的来说,<em>函数</em>是可以<em>返回</em><em>局部变量</em>的。 <em>局部变量</em>的作用域只在<em>函数</em>内部,在<em>函数</em><em>返回</em>后,<em>局部变量</em>的内存已经释放了。因此,如果<em>函数</em><em>返回</em>的是<em>局部变量</em>的值,不涉及地址,程序不会出错。但是如果<em>返回</em>的是<em>局部变量</em>的地址(<em>指针</em>)的话,程序运行后会出错。因为<em>函数</em>只是把
C/C++之函数返回指针或者是引用时常见错误总结
1、说明        <em>函数</em>如果是<em>指针</em>或则引用的<em>返回</em>,一般全局变量、局部静态变量、局部动态分配内存的变量可以使用作为<em>函数</em>的<em><em>返回</em>值</em>,<em>局部变量</em>不行,因为<em>局部变量</em><em>函数</em>调用完会自动销毁内存,<em>这个</em>时候<em>返回</em>的<em>指针</em>或则引用就有问题了。 2、展示代码 #include #include #include using namespace std; string& f1(const s
C++函数返回指针结果的坑.
可能被java惯坏了, <em>这个</em>坑居然踩过两次,特意备注下:      以下一个MAT转IplImage的例子: Mat srcImage = imread("1.jpg"); IplImage* lvRet = &IplImage(srcImage); cvShowImage("aa", lvRet);    运行之,没问题的,可以显示图像 。  但是, 将转换<em>函数</em>放在一个独立的<em>函数</em><em>里面</em>就不
c/c++使用指针函数返回指针函数参数问题
一、使用<em>指针</em>做<em>函数</em><em><em>返回</em>值</em>:   1、当使用<em>指针</em>做为<em>函数</em>的<em><em>返回</em>值</em>时,主<em>函数</em>处的char *p;将获得调用<em>函数</em>char *pf;的值,即一个地址值,如oxAE72。此时需要我们注意的是该地址值所<em>指向</em>的空间是否存在(即已向操作系统声明注册,不会被释放,即可能被其他操作修改); 2、使用栈内存<em>返回</em><em>指针</em>是明显错误的,因为栈内存将在调用结束后自动释放,从而主<em>函数</em>使用该地址空间将很危险
C++ 从函数返回指针函数返回局部静态变量的地址)
C++ 不支持在<em>函数</em>外<em>返回</em><em>局部变量</em>的地址,除非定义<em>局部变量</em>为 static 变量。 错误代码: int main(){ int *p; p=funcGetPointer(); for (int i = 0; i < 10; i++) { cout<<<<<<en
我用函数返回一个动态分配的指针值,我应该在哪里释放呢,怎么释放呢
我用<em>函数</em><em>返回</em>一个new动态分配的<em>指针</em>值,我应该在哪里释放呢,怎么释放呢 在主<em>函数</em>中delete<em>返回</em>的<em>指针</em>,但是程序运行出错,请问我应该怎么解决呢? #include using n
黑马程序员---指向函数指针返回指针函数
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- <em>指向</em><em>函数</em>的<em>指针</em>(<em>函数</em><em>指针</em>变量) c语言中,<em>函数</em>名就是该<em>函数</em>所占内存区的首地址。可以把<em>函数</em>的<em>这个</em>首地址赋予给一个<em>指针</em>变量,使该<em>指针</em>变量<em>指向</em>该<em>函数</em>。然后通过<em>指针</em>变量就可以找到并调用<em>这个</em><em>函数</em>。 <em>函数</em><em>指针</em>变量定义的一般形式为:         类型说明符(*<em>指针</em>变量名)(形参列表
返回指针函数指向函数指针的用法
<em>返回</em><em>指针</em>的<em>函数</em>与<em>指向</em><em>函数</em>的<em>指针</em>的用法 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt;void *func(){    /*     * 一种很容易犯的错误,将<em>局部变量</em>的地址<em>返回</em>     */    int m;    printf(&quot;define as void *func()/n&quot;);    return &amp;amp;m;}/* * 声明一个指...
指向函数指针返回指针函数
<em>指向</em><em>函数</em>的<em>指针</em> (一) 用<em>函数</em><em>指针</em>变量调用<em>函数</em>   可以用<em>指针</em>变量<em>指向</em>整形变量、字符串、数组、结构体、也可以<em>指向</em>一个<em>函数</em>。一个<em>函数</em>在编译时被分配一个入口地址。<em>这个</em>入口地址就称为<em>函数</em><em>指针</em>。可以用一个<em>指针</em>变量<em>指向</em><em>函数</em>,然后通过该<em>指针</em>变量调用此<em>函数</em>。用简单的数值比较为例: 1 #include 2 #include 3 4 int main() 5 { 6
返回指针函数&&指向函数指针
前言接下来我只讲<em>指针</em>的最常见用法,比如这一章的内容----<em>返回</em><em>指针</em>的<em>函数</em>与<em>指向</em><em>函数</em>的<em>指针</em>一、<em>返回</em><em>指针</em>的<em>函数</em><em>指针</em>也是C语言中的一种数据类型,因此一个<em>函数</em>的<em><em>返回</em>值</em>肯定可以是<em>指针</em>类型的。<em>返回</em><em>指针</em>的<em>函数</em>的一般形式为:类型名 * <em>函数</em>名(参数列表) eg:char * upper(参数){} <em>返回</em><em>指向</em>char型的<em>指针</em>变量比如下面<em>这个</em><em>函数</em>,<em>返回</em>一个<em>指向</em>char类型变量的<em>指针</em>...
指向函数指针返回指针值的函数
http://hi.baidu.com/passerryan/item/99aebc3ab57f3d8df5e4ad39 1、<em>指向</em><em>函数</em>的<em>指针</em> 定然形式为:   数据类型 (*<em>指针</em>变量名)(); 例如:int (*p)();  定义P是一个<em>指向</em><em>函数</em>的<em>指针</em>变量,此<em>函数</em>带回整型的<em><em>返回</em>值</em>。若写成 int *p(); 它就声明了一个<em>函数</em>,<em>函数</em>的<em><em>返回</em>值</em>是<em>指向</em>整型变量的<em>指针</em>。在i
C++学习记录之函数返回指针的问题
一般在<em>函数</em>中定义一个对象有两种方法: 1、在栈上建立<em>局部变量</em>。注意,在栈上时!栈用于<em>函数</em>是为了<em>返回</em>时找得到调用点(在调用时压入栈的) ,那么,<em>返回</em>时要POP才能得到。<em>函数</em>体中建立的任何东西都释放掉了,你<em>返回</em>的<em>指针</em><em>指向</em>的内容为空,成为了野<em>指针</em>。 2、在堆中分配。<em>返回</em>时不会摧毁,因为堆是全局存在的。但<em>函数</em>的调用者要记得delete回来的<em>指针</em>。 我们来看下面的一段代码 char *GetSt
C++---从函数返回指针
C++ 不支持在<em>函数</em>外<em>返回</em><em>局部变量</em>的地址,除非定义<em>局部变量</em>为 static 变量。#include #include #include using namespace std; // 要生成和<em>返回</em>随机数的<em>函数</em> int * getRandom( ) { static int r[10]; // 设置种子 srand( (unsigned)time( NULL ) );
[C/C++]如何解读返回函数指针函数声明
int (*(*pf())())() { return nullptr; }   从来没有见过这样的<em>函数</em>声明。那么它究竟是一个怎样的<em>函数</em>呢?我努力回忆起《C专家编程》一书的内容,把其中解读变量声明的方法应用于该<em>函数</em>上,最终读懂了该<em>函数</em>。下面是大致的解读过程。   首先,要确定声明中出现的操作符的优先级。显然,<em>函数</em>调用操作符()的优先级是高于<em>指针</em>解引用操作符*的
Linux c 函数返回局部变量指针返回局部指针变量
Linux c <em>函数</em><em>返回</em><em>局部变量</em>的<em>指针</em>和<em>返回</em>局部<em>指针</em>变量 最近再看c语言实用之道这本书,对于其中的一段代码不太清楚,关于c<em>函数</em><em>返回</em>局部<em>指针</em>变量与<em>返回</em><em>局部变量</em>的<em>指针</em>之间的区别,对于后者还是比较清楚的,前者一直有点懵,这次查阅一些资料,算是弄清楚了,在此作个记录。 c语言<em>函数</em>之间的调用是通过栈帧(Stack frame)实现的,栈帧其实都是进程虚拟地址空间中栈区域分配的一块内存空间,X86架构下,...
指向函数指针返回指针函数
1 <em>函数</em><em>指针</em>char (*pFun)(int); //定义一个<em>指向</em><em>函数</em>的<em>函数</em><em>指针</em>pFun, <em>指向</em>的<em>函数</em>参数是int型 <em><em>返回</em>值</em>是char型 char g1Fun(int a) //定义了一个<em>函数</em>,<em>函数</em>的<em>函数</em>名实际上就是一个<em>指针</em><em>函数</em>名<em>指向</em>该<em>函数</em>的代码在内存中的首地址。 { cout<<; } void main() { pFun=g1Fun; //函
返回指针函数指向函数指针
int *pf(int);① int (*pf)(int);② ①pf是一个<em>函数</em>,<em>返回</em>一个<em>指向</em>int的<em>指针</em> ②pf是一个<em>指向</em>某<em>函数</em>的<em>指针</em>,<em>函数</em><em>返回</em>int值<em>返回</em><em>指针</em>的<em>函数</em>: <em>指向</em><em>函数</em>的<em>指针</em>:
指向函数指针/返回指针函数
<em>函数</em><em>指针</em>表示<em>指向</em>某一<em>函数</em>的<em>指针</em>,如下所示, int add(int,int); int (*pf)(int,int); pf=add; 注意,因为<em>函数</em>add有两个参数,所以pf<em>指针</em>也必须有两个参数;且<em>函数</em>add的两个参数均为int型,所以pf的两个参数也必须与之匹配。如下例, #include“stdio.h" #include "conio.h" int add(int,int
【C++】指向函数指针返回指针函数
字面看就可以看出二者的区别,<em>指向</em><em>函数</em>的<em>指针</em>即<em>指针</em><em>指向</em>的地址为某个<em>函数</em>,而<em>返回</em><em>指针</em>的<em>函数</em>为某个<em>函数</em><em><em>返回</em>值</em>是<em>指针</em>。 下面具体说: 1、<em>指向</em><em>函数</em>的<em>指针</em> bool (*ptr)(int a); 解析:声明<em>指针</em>ptr,<em>指向</em>的<em>函数</em>带有一个int形参,并<em>返回</em>bool型变量。注:*ptr两边的括号是必须的。否则如下: bool *ptr(int a); 为<em>返回</em><em>指针</em>的<em>函数</em>,<em>函数</em>名ptr,参数为int
20返回指针函数指向函数指针
一、<em>返回</em><em>指针</em>的<em>函数</em><em>指针</em>也是C语言中的一种数据类型,因此一个<em>函数</em>的<em><em>返回</em>值</em>肯定可以是<em>指针</em>类型的。<em>返回</em><em>指针</em>的<em>函数</em>的一般形式为:类型名 * <em>函数</em>名(参数列表)比如下面<em>这个</em><em>函数</em>,<em>返回</em>一个<em>指向</em>char类型变量的<em>指针</em>1//将字符串str中的小写字母变成大写字母,并<em>返回</em>改变后的字符串2//注意的是:这里的参数要传字符串变量,不能传字符串常量3char*upper(ch...
C++函数返回局部变量
C++<em>函数</em>的<em><em>返回</em>值</em>是<em>局部变量</em>时,该<em><em>返回</em>值</em>可能是值类型、<em>指针</em>类型和引用类型。 以自定义类型MyStruct为例: struct MyStruct { int x; int y; }; 1 <em><em>返回</em>值</em>是自定义结构的值类型 定义一个<em><em>返回</em>值</em>为MyStruct的<em>函数</em>MyProc1()。 MyStruct MyProc1() { MyStruct l_mystruct; l_mystruct.x =
讨论:C++中函数不能返回局部变量的引用,你是怎么理解的?
C++ Primer中 214页中说千万不要<em>返回</em><em>局部变量</em>的引用,然后有下面的示例: const string &mainp(const string &s) { string ret=s; retur
C++函数返回,你必须注意的问题
http://blog.csdn.net/kwsy2008/article/details/49530549 C++太繁杂了,先接触C++后接触Python这样的语言,你就再也不想碰它,因为,就连一个<em>函数</em><em><em>返回</em>值</em>都一大堆的说道,这<em>里面</em>的玄机,连工作三年的C++熟手都未必能准确的理解和运用。         归根结底,C++所面临的问题要求它提供各种各样的机制以保证性能,也
C/C++函数返回底层是如何实现的?
在看情景分析的时候上边提到过C<em>函数</em>调用的过程,我看到上边说<em>函数</em>的<em><em>返回</em>值</em>是通过寄存器是传递的,看了以后明白了为什么<em>函数</em>只能够<em>返回</em>一个基本类型变量了,但是刚刚看的一段代码让我很吃惊,一个<em>函数</em>竟然可以<em>返回</em>一
C/C++赋值语句返回
<em>返回</em>的就是所赋的值,,,所以,,不要看到赋值表达式就直接认为是真了。。
指向函数指针返回指针函数
#include"stdio.h" char *p=NULL; int main(void) { void *huode(void); void max(void); void process(void (*p)(void)); p=malloc(20); printf("请输入<em>函数</em>名"); scanf("%s",p); if(!(strcmp(p,"m
14返回指针函数指向函数指针
一、<em>返回</em><em>指针</em>的<em>函数</em>  <em>指针</em>也是C语言中的一种数据类型,因此一个<em>函数</em>的<em><em>返回</em>值</em>肯定可以是<em>指针</em>类型的。 <em>返回</em><em>指针</em>的<em>函数</em>的一般形式为:类型名 * <em>函数</em>名(参数列表)  比如下面<em>这个</em><em>函数</em>,<em>返回</em>一个<em>指向</em>char类型变量的<em>指针</em> int main() {     // 定义一个字符串变量     char str[] = "lmj";
c 指向函数指针
自己写的几个测试例子,自测ok #include"stdio.h" typedef void PF(char a,int b); int main() { PF fun; fun('c',90); } void fun(char a,int b) { printf("the argument is %c and %d\n",a,b
请问这个返回指向函数指针是怎么回事,看不懂啊
书上<em>这个</em><em>返回</em><em>指向</em><em>函数</em>的<em>指针</em>rn int (*ff(int))(int*,int);rn完全看不懂,请帮我翻译翻译啊,最好能给我一个简单的例子
c语言指向函数指针返回指针函数
// // main.c // c<em>指针</em> // // Created by stevenchang on 9/4/15. // Copyright (c) 2015 cz. All rights reserved. // #include void printfArray(int array[]); //声明一个<em>函数</em>,用于打印数组元素 char *returnName();
C++ 返回的问题
我今天看了一下Boost程序库完全开发指南,中第96页的一个实例: shared_ptr create() { return shared_ptr (new i
关于C语言中返回局部指针变量
关于C语言中<em>函数</em><em>返回</em>局部<em>指针</em>变量出错。
c/c++返回指针、引用时注意的地方
转载自:https://blog.csdn.net/wuhaiwei002/article/details/51176731 全局变量,局部静态变量,局部动态分配变量 都可以作为<em>函数</em><em><em>返回</em>值</em>。 局部自动变量不行 int&amp;amp; fu...
C++返回类型为类指针时注意事项
前言 博主很久没有用C++了,最近在用C++时遇到一点小问题,就是在<em>返回</em>类型为类<em>指针</em>时,若该类是在<em>函数</em>中创建,则不能正确<em>返回</em>。问题解决后在这里记录。 开始 step.1 错误代码准备 在VS2017中新建C++控制台应用,并编辑代码如下: #include &quot;pch.h&quot; #include &amp;lt;iostream&amp;gt; #include &amp;lt;string&amp;gt; using namesp...
C语言中关于返回指针函数指向函数指针
初学c语言中的<em>返回</em><em>指针</em>的<em>函数</em>和<em>指向</em><em>函数</em>的<em>指针</em>时,往往容易分不清楚,下面我就来梳理一下: 一、<em>返回</em><em>指针</em>的<em>函数</em> 也叫<em>指针</em><em>函数</em>。 当一个<em>函数</em>声明其<em><em>返回</em>值</em>为一个<em>指针</em>时,实际上就是<em>返回</em>一个地址给调用<em>函数</em>,以用于需要<em>指针</em>或地址的表达式中。 格式: 类型说明符 * <em>函数</em>名(参数) 当然了,由于<em>返回</em>的是一个地址,所以类型说明符一般都是int。 例如: int *GetDate(
返回指向局部变量指针或引用的问题
一般的来说,<em>函数</em>是可以<em>返回</em><em>局部变量</em>的。 <em>局部变量</em>的作用域只在<em>函数</em>内部,在<em>函数</em><em>返回</em>后,<em>局部变量</em>的内存已经释放了。因此,如果<em>函数</em><em>返回</em>的是<em>局部变量</em>的值,不涉及地址,程序不会出错。但是如果<em>返回</em>的是<em>局部变量</em>的地址(<em>指针</em>)的话,程序运行后会出错。因为<em>函数</em>只是把<em>指针</em>复制后<em>返回</em>了,但是<em>指针</em><em>指向</em>的内容已经被释放了,这样<em>指针</em><em>指向</em>的内容就是不可预料的内容,调用就会出错。准确的来说,<em>函数</em>不能通过<em>返回</em><em>指向</em>栈内存的<em>指针</em>(注意
关于返回指向局部变量(对象)指针问题
int *fun(...)rnrnint *q=NULL;rnreturn q;rnrn我知道不要<em>返回</em><em>指向</em><em>局部变量</em>(对象)<em>指针</em>,因为一旦<em>函数</em>结束,局部对象(变量)被释放,<em>返回</em>的<em>指针</em>就变成了野<em>指针</em>了rn但是我今天看了个资料有段代码的形式是这样的,它临时<em>指针</em><em>指向</em>了NULL,这样可以吗??(这本书不一定说的对 因为我前面看这本书的时候都看出来有错误了)
【C语言】返回指针函数指向函数指针
 一、<em>返回</em><em>指针</em>的<em>函数</em>  <em>指针</em>也是C语言中的一种数据类型,因此一个<em>函数</em>的<em><em>返回</em>值</em>肯定可以是<em>指针</em>类型的。 <em>返回</em><em>指针</em>的<em>函数</em>的一般形式为:类型名 * <em>函数</em>名(参数列表)  比如下面<em>这个</em><em>函数</em>,<em>返回</em>一个<em>指向</em>char类型变量的<em>指针</em> 1 // 将字符串str中的小写字母变成大写字母,并<em>返回</em>改变后的字符串 2 // 注意的是:这里的参数要传字符串变量,不能传字符串常量 3 char * u
返回指向局部变量指针或引用
<em>返回</em><em>局部变量</em>没问题 如果<em>返回</em><em>局部变量</em>有问题,<em>函数</em>的意义还有吗? 全局变量还用<em>返回</em>吗?  <em>返回</em><em>指向</em><em>局部变量</em>的<em>指针</em>才有问题, <em>函数</em>退栈之后,<em>局部变量</em>消失, <em>指针</em>将<em>指向</em>未知区域,所以出现问题。   <em>返回</em><em>局部变量</em>的引用也是<em>绝对</em><em>不可以</em>的。 引用只是变量的一个别名,变量本体都不存在了,引用当然也没有任何意义。  还有,如果是堆空间,可以<em>返回</em>,即在<em>函数</em>中用new申请的空间,是可以<em>返回</em>的。
C++中函数返回数组指针的几种方法总结
因为数组不能被拷贝,所以<em>函数</em>不能<em>返回</em>数组。不过,<em>函数</em>可以<em>返回</em>数组的<em>指针</em>或引用。<em>返回</em>数组<em>指针</em>的方法有以下几种:     1、方法一:使用类型别名。如下         typedef int arrt[10];   //arrT是一个类型别名,它表示的类型是含有10个整数的数组         using arrT = int[10];  //C++11标准新的类型别名声明语法         ar...
c++ 指针数组的简单运用
#include&amp;lt;iostream&amp;gt; using namespace std; int main (){ int line1[] = {1,2,3}; int line2[] = {4,5,6,7}; int line3[] = {7,8,9}; int* pline[3] = {line1,line2,line3};//定义<em>指针</em>类型数组并初始化 cout &amp;lt;&amp;lt;&quot;输出矩...
C++之返回数组指针
因为数组不能被拷贝,所以<em>函数</em>不能<em>返回</em>数组。不过<em>函数</em>可以<em>返回</em>数组的<em>指针</em>或者引用,今天我们一起来学习下C++下的几种<em>返回</em>数组<em>指针</em>的方法 一、类型别名 这是<em>返回</em>数组<em>指针</em>最直接的一种方法了 #include&lt;iostream&gt; using namespace std; typedef int arrT[10];//类型别名,表示含有10个整形的数组 //using arrT ...
C++智能指针返回局部指针测试
智能<em>指针</em>:对new对象进行智能的管理,跳出相关作用域会自动删除。 不需要再调用delete。对象删除会自动调用析构<em>函数</em>。 这里只记录:unique_ptr 与shared_ptr      auto_ptr已经被unque_ptr替换  weak_ptr不是特别常用。 unique_ptr 是唯一的智能<em>指针</em>管理,同时只有一个记录,不可直接等于,通过std::move转换给另一个智能<em>指针</em>
返回指向局部变量指针很安全哪
下面一段程序:rnint main(void)rn int *j=getPInt();rn pad();rn pad();rn pad();rn pad();rn pad();rn printf("j points to a local location,it is%d",*j);//输出100;rnrnrnvoid pad(void)rn int a=0;rnrnrnint *getPInt(void)rn int i=100;rn return &i;rnrn 我以为不会输出是100,因为getPInt<em>函数</em><em>返回</em>,它的<em>局部变量</em>i那块儿内存也就被弹出栈空间。rn 我在pad<em>函数</em>里定义变量,想继续堆栈把那块儿“100”的内存给覆盖掉。rn 为什么还会是100呢?rn 我只是想验证<em>返回</em><em>指向</em><em>局部变量</em>的<em>指针</em>不保险,可发现它很安全那!rn 小弟新手,言辞愚蠢之处还请指教。-.-rn
C语言中返回指针函数指向函数指针
两个<em>函数</em> int  *p( int a,int b) 和int(*p)(  int a,int b )中的p有何区别?正如文章题目所言,一个是<em>函数</em>的<em>指针</em><em><em>返回</em>值</em>,一个是<em>指向</em><em>函数</em>的<em>指针</em>,在这里 int  *p( int a,int b)<em>函数</em>的<em><em>返回</em>值</em><em>指向</em>一个整型变量。       要弄明白两者的区别,首先得知道运算符()和*的优先级,由于运算符()的优先级要高于*,p先与后面的()结合,所以int
【C语言】14-返回指针函数指向函数指针
说明:<em>这个</em>C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 前言 前面我们花了接近3个章节学习<em>指针</em>,应该都感受到<em>指针</em>的强大了吧。<em>指针</em>可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理、提升程序性能。关于<em>指针</em>的内容还非常多,比如<em>指针</em>数组、<em>指向</em>数组的<em>指针</em>、...
C++ 利用指针和结构体实现一个函数返回多个值
介绍利用<em>指针</em>与利用结构体作为<em>函数</em>的<em><em>返回</em>值</em>,实现一个<em>函数</em><em>返回</em>多个值
C++返回引用类型 指针的引用
C++<em>返回</em>引用类型A& a(){ return *this;} 就生成了一个固定地址的<em>指针</em>,并把<em>指针</em>带给你 但A a() { return *this;}会生成一个临时对象变量,并把<em>这个</em>临时变量给你 这样就多了一步操作 当<em>返回</em>一个变量时,会产生拷贝。当<em>返回</em>一个引用时,不会发生拷贝,你可以将引用看作是一个变量的别名,就是其他的名字,引用和被引用的变量其实是一个东西,只是有了两个名字而已。 <br /
给局部静态指针变量分配内存时,最后不执行delete的话,会有什么后果?
T* T::getPoint() { static T* s_T= NULL; if (s_T== NULL) { s_T= new T(); if(!s_T->Create()) { delete
C++智能指针作为函数形参和函数返回的应用场景
当智能<em>指针</em>作为<em>函数</em>形参时,在调用此<em>函数</em>时,形参代表的智能<em>指针</em>的引用计数将+1,同时退出此<em>函数</em>时,该形参的引用计数将-1. 当形参不是智能<em>指针</em>时,调用该<em>函数</em>和退出该<em>函数</em>时,该形参的引用计数不会变化: 当<em>函数</em>的内部创建一个智能<em>指针</em>,并需要在<em>函数</em>外使用时,此时,<em>函数</em>的<em><em>返回</em>值</em>必须为该智能<em>指针</em>类型(即<em>函数</em>内创建的智能<em>指针</em>退出该<em>函数</em>时,引用计数不会-1),否则,当<em>函数</em>体执行结束时,该智能<em>指针</em>引用计数...
关于return返回局部变量指针问题
如图,为什么两个运行结果不同?求大神指导
函数指针返回指向函数指针
准确地讲,本文所涉及的内容是C++中较难理解的,本文的目的不是在于将它们解释清楚,因为这需要你循序渐进地做很多练习才可以。看下面一个例子: int (*func(bool real))(int, int) 你觉得它的<em><em>返回</em>值</em>是什么? 这里就涉及到了如何理解<em>指向</em><em>函数</em>的<em>指针</em>的问题了。一些来自C++教材的建议是从里向外解读<em>这个</em>表达式,这里所谓的<em>里面</em>就是func(bool real),那么剩下的部...
返回指向函数指针问题!
具有<em>函数</em>类型的形参所对应的实参将被自动转换为<em>指向</em>相应<em>函数</em>类型的<em>指针</em>:rn但是<em>返回</em>的是<em>函数</em>时,同样的转换操作则无法实现:rnrntypedef int func(int *, int);rnrnvoid f1(func); //okrnrnfunc f2(int); //errorrnrnfunc *f3(int); //okrnrn麻烦讲解一下!顺便举个实例:调用过程!
VC:返回指向函数指针
刚开始接触<em>函数</em><em>指针</em>,感觉特别深奥难懂,经过一个小代码的测试,终于有了一点感悟。 #include #include using namespace std; using std::string; //使用typedef为<em>函数</em><em>指针</em>定义同义词 typedef int (*PF)(int, int); //<em>返回</em>a + b int add(int a, int b)
全局指针指向局部变量
假设:rnint *gblint;rnvoid somefunc()rn int a=23;rn gblint=&a;rnrnint main()rn printf("%d",(*gblint));rnrnrn会有<em>指针</em>所指的内存有效吗?rn我编译运行后,显示23,看来是可以的,可是我不知道怎么会这样?
return 局部变量合法,函数返回的生命周期
一:return <em>局部变量</em>合法 1:return /* <em>函数</em>的参数,<em>函数</em>内部定义的<em>局部变量</em>,<em>函数</em>执行完成的时候, 就会被操作系统回收,内存会被其他程序所用 */ void go(int num) { int x=10; printf("num=%d,x=%d\n",num,x); printf("&num=%p,&x=%p",&num,&x); } void main()
关于c++ 返回的问题
c++标准库复数中的一段代码 刚从c转过来觉得很疑惑 这里<em>返回</em>带* 取内容 相当于拷贝一份类 传给引用 但是当执行完毕后 <em>这个</em>匿名的类不就被回收了吗 还用引用接受 不会出错吗
C++中函数如何返回数组
转自: C++中如何使<em>函数</em><em>返回</em>数组   在C++中,数组不是一种类型,因此不能被直接<em>返回</em>。一般有两种方法来<em>返回</em>一个数组。 1. <em>返回</em>一个<em>指向</em>数组的<em>指针</em>  #include using namespace std; int* Array() {    int *a;  a=new int [10];  for(int i=0;i  {   a[i
c++函数返回指针的疑问
代码如下: Node* search_list(int key){ Node* t = NIL->next; while(t!=NIL&&t->key!=key)t = t->next;//若没有到头
C++中关于函数返回指针的问题
char *strcpy(char *strDest, const char *strSrc); { assert((strDest!=NULL) && (strSrc !=NULL)); char
函数返回指针
<em>函数</em>的<em><em>返回</em>值</em>是<em>指针</em>(地址)
C指针一个小错误(2)-返回不能是局部变量指针
下面是很简单的几个小事例 int *ret_int(void){ int p[] ={1,2,3,4};//或者int a=3; return p; //return &a;} 调用后将得不到数组值或者a值,成为野<em>指针</em>。(数组名就是数组地址,类似于<em>指针</em>,也不能做<em>局部变量</em><em><em>返回</em>值</em>)int *ret_int(void){ int *p =(int *)malloc(s
为什么返回为数值时,返回局部变量可以,而返回为引用时,返回局部变量不可以
<em>这个</em>问题其实是一个很好的问题,我可以从逆向工程的角度来给你解释一下,为了回答<em>这个</em>问题我专门去写了一个程序进行了测试。<em>局部变量</em>是存在于栈中的,<em>函数</em>被调用时先在栈中为变量申请空间,调用完成释放变量空间。<em>函数</em>在<em>返回</em>参数的时候是这样的,先把要<em>返回</em>的数放在寄存器eax中,然后回到主<em>函数</em>中取出eax中的数值放在变量里,所以这样是不涉及<em>函数</em>中变量地址的。如果要<em>返回</em>引用,也就是变量地址,那么它会把<em>这个</em>变量的地址放
指针指向函数中的局部变量的地址的问题
在类中声明一个<em>指针</em>变量,并创建一个内部<em>函数</em>改变该<em>指针</em>变量的值。 (1).h文件 void readSettings(); QSettings *DialSettings; (2).cpp文件 void MainWindow::readSettings() { QSettings BasicSettings( QLatin1String("BasicSettings/
C++智能指针返回局部指针
智能<em>指针</em>:对new对象进行智能的管理,跳出相关作用域会自动删除。 不需要再调用delete。对象删除会自动调用析构<em>函数</em>。 这里只记录:unique_ptr 与shared_ptr auto_ptr已经被unque_ptr替换 weak_ptr不是特别常用。 unique_ptr是唯一的智能<em>指针</em>管理,同时只有一个记录,不可直接等于,通过std::move转换...
c++ 多值返回指针使用
一般来说, 如果一个<em>函数</em>需要<em>返回</em>多个参数,可以采用以下两种方法: 第一种方法是将<em><em>返回</em>值</em>作为写参数。 第二种方法是定义一个结构,<em>返回</em><em>指向</em>该结构的<em>指针</em>。 下面的一个例子是<em>指针</em>使用的一个例子。 change1 是值传递,不能作为<em><em>返回</em>值</em>使用。 int change1(char* name){     name=”alter”;     return 1; } i
关于函数不能返回局部对象的引用或者局部对象的指针
关于C++为什么最好不要<em>返回</em>局部对象的<em>指针</em>和引用。
函数返回局部变量
一般的来说,<em>函数</em>是可以<em>返回</em><em>局部变量</em>的。 <em>局部变量</em>的作用域只在<em>函数</em>内部,在<em>函数</em><em>返回</em>后,<em>局部变量</em>的内存已经释放了。因此,如果<em>函数</em><em>返回</em>的是<em>局部变量</em>的值,不涉及地址,程序不会出错。但是如果<em>返回</em>的是<em>局部变量</em>的地址(<em>指针</em>)的话,程序运行后会出错。因为<em>函数</em>只是把<em>指针</em>复制后<em>返回</em>了,但是<em>指针</em><em>指向</em>的内容已经被释放了,这样<em>指针</em><em>指向</em>的内容就是不可预料的内容,调用就会出错。准确的来说,<em>函数</em>不能通过<em>返回</em><em>指向</em>栈内存的<em>指针</em>(注意...
2011年考研备战时间表下载
2011年考研备战时间表,准备考研的朋友一定要看呢 相关下载链接:[url=//download.csdn.net/download/echochenqinglan/2216563?utm_source=bbsseo]//download.csdn.net/download/echochenqinglan/2216563?utm_source=bbsseo[/url]
LCD1602使用四线模式驱动下载
使用四线模式驱动LCD1602,配合DS1302做的时钟 相关下载链接:[url=//download.csdn.net/download/carydeng/3876196?utm_source=bbsseo]//download.csdn.net/download/carydeng/3876196?utm_source=bbsseo[/url]
卫星接收软件下载
一款卫星接收软件 相关下载链接:[url=//download.csdn.net/download/ablajan77/4631818?utm_source=bbsseo]//download.csdn.net/download/ablajan77/4631818?utm_source=bbsseo[/url]
相关热词 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd c# 操作sql视图
我们是很有底线的