局部变量分为局部自动变量和局部静态变量,无论自动还是静态,返回局部变量都是没有问题的,因为返回值不是地址,虽然在函数调用结束后(栈区)局部变量的内存会被释放回收掉,但函数返回的是变量拷贝副本。 局部指针: 局部指针分为局部静态指针和局部自动指针,可以返回一个局部静态指针的地址,但不应该返回一个局部自动指针...
局部变量也分局部自动变量和局部静态变量,由于a返回的是值,因此返回一个局部变量是可以的,无论自动还是静态, 因为这时候返回的是这个局部变量的值,但不应该返回指向局部自动变量的指针,因为函数调用结束后该局部自动变量 被抛弃,这个指针指向一个不再存在的对象,是无意义的。但可以返回指向局部静态变量的指针,因为静态...
1、返回局部变量的指针 当函数内部定义了一个局部变量,我们可以通过指针返回该变量的地址,需要注意的是,由于局部变量在函数执行完毕后会被销毁,所以返回的指针指向的内存空间是不确定的,可能会导致程序崩溃,为了避免这种情况,可以将局部变量定义为静态变量或者全局变量。 示例代码: #include <stdio.h> int *get_local...
上述代码中,globalInt 可以定义在函数外部或者定义成静态变量,这样在整个程序执行期间都存在,此时返回它的地址是安全合法的。 除了上述整数例子,还可以举例字符串,大家有问题欢迎交流🏪 🎉所以,大家在以后的C/C++编程中一定要记住:不能返回局部变量的指针和引用哦。 0 0 发表评论 发表 作者最近动态 李老师爱学习...
一般的来说,函数是可以返回局部变量的。局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指...
C/C++返回局部变量的引用/地址 程序1 下面这段程序,返回局部变量的引用,将其赋给指针p,第一次打印可以输出a的值,第二次便是一个随机数: #include<iostream> using namespace std; int *p = NULL; int& foo() { int a = 10; return a; }
c[]数组的存放地址是被传送出去了的,但是,由于c[]是局部变量, 在函数执行完成后,存放的内存空间就被释放,所以,在外部通过指针访问c[]数组时,指向的内存空间无效,而且还可能出现访问非法内存的危险。虽然这样能够运行,但是没有实际效果 test3可以运行。*c指针c是保存在栈中,"abcdef"字符串保存在文字常量区,其...
一个典型的例子就是标准函数 scanf(),它从标准输入流中读入数据,然后将结果放在它的变量中,该变量由调用者提供的指针参数所引用: intvar;scanf("%d",&var); 该函数调用会将字符串当作十进制数读入,然后转换为整数,再将它的值存储在局部变量 var 的内存地址上。
[C语言]内存问题之返回局部变量地址 来看这样一段代码 intfunc() {inta =2;return&a; }voidmain() {int* p =fun();*p =20; } 1. 2. 3. 4. 5. 6. 7. 8. 这段代码非常简单,func 函数返回一个指向局部变量的地址,main 函数中调用 func 函数,获取到指针后将其设置为 20。