c++ 函数返回指针 及用法】的更多相关文章

#include<string> #include<iostream> using namespace std; string fun1(int a) { string str = "a"; return str; } char* fun2(int a) { ]; p[] = 'a'; p[] = '\0'; return p; } void main() { cout<<fun1()<<endl; ); cout<<p<…
主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static char fruit[] = "apple"; // 不加static的话这个函数还回的指针会悬空,由于在函数退出时fruit组数被销毁 // 加了static后fruit数组分配在数据段里,而不是堆栈中.生命期和程序一样长,函数退出时变量 // 依旧有效 return fruit; }…
C++ 允许您从函数返回指针.为了做到这点,必须声明一个返回指针的函数,如下所示: int * myFunction() { . . . } 另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量. 现在,来看下面的函数,它会生成 10 个随机数,并使用表示指针的数组名(即第一个数组元素的地址)来返回它们,具体如下: #include <iostream> #include <ctime> using namespace std; // 要生成和返回…
下面从3个代码例子分别讲述以下2个知识点: (1) 传递指针给函数(参数类型为指针) (2) 返回指针的函数(返回类型为指针) #include <stdio.h> // 传递指针给函数&返回指针的函数 // (1) 传递一个int型指针给函数,并在函数内改变这个值 void add(int *base, int num); // (2) 数组作为参数求和 long sum1(int *arr, int size); long sum2(int *arr, int size); //…
1.将函数内部定义的变量用static修饰 由于static修饰的变量,分配在静态内存区(类似于全局变量区),函数返回时,并不会释放内存,因此可以将要返回的变量加static修饰. int *test_func() { static int local_data; //加static修饰 local_data = ; printf("Function local_data : %d\n", local_data); return &local_data; } int main(…
#include<stdio.h> #include<string.h> char *mystrchr(char *s,char c) { while(*s) { if(*s == c) { return s; } s++; } return NULL; } int main() { ] = "hello world"; //char* s = strchr(str,'a'); char *s = mystrchr(str,'e'); //返回ello worl…
遇到过好几次关于函数返回指针变量问题,有时候是可以的,有时候是不可以的,然后就混乱了.今天研究了下,结果发现原来和内存分配有关. 用下面的例子分析下吧: char * test() { char a[] = "abc"; char * p =a; return p; } int main() { printf("%s",test()); ; } 这段p是局部指针,指向局部数组a,这种情况输出为空或者奇怪字符串. 分析: a是局部数组,系统为其分配的是栈内存,test…
当我们在处理一个数组的时候常常会碰到这样的问题:输入一个数组,和数组的一个元素,返回该元素所在行数和列数.这样就需要返回多组两个值,且组数不定.上述类型的函数在c语言程序里面存在两个问题.第一,函数只能返回一个值(指针):第二,若以指针返回值,则不确定指针所指的内存大小.以下先分别解决这两个问题,之后综合考虑. 1返回多个值的函数 1.1采用指针参量记录值 不用函数的返回值,直接用指针来处理.在函数的输入项里加入一个指针,用来保存记录多个值.如下所示,a[N][M]为要处理的数组,s为要找的数,…
这个问题属于非常初级的问题,但是对于初学不知道的人可能会比较头疼.C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现.比如一个矩阵相乘的函数,很容易地我们就写成: 1 #include <iostream> 2 3 using namespace std; 4 5 void MultMatrix(float M[4], float A[4], float B[4]) 6 { 7 M[0] = A[0]*B[0] + A[1]*B[2]; 8 M[1] =…
最近在看C++ primer plus,感觉函数与指针这一章难点比较多,记写笔记,加强理解. From C++ Primer Plus: Chapter 7 Function:C++ Programming Modules 1. 如何声明函数指针? 和函数原型类似: 需要声明指针指向函数的返回值和参数列表 double pam(int); //参数为int 类型,返回值为double 类型的函数 double (*pf);(int) //指向参数为int类型,返回值为double 类型的指针 p…