1. 为什么不应该返回局部变量的地址? 局部变量存储在栈区:在C语言中,局部变量(包括函数参数和自动变量)通常存储在栈内存中。当函数执行完毕并返回时,栈内存会被释放,这意味着局部变量所占用的内存空间将不再有效。 返回地址后无法访问有效数据:如果函数返回一个局部变量的地址,那么在函数返回后,调用者试图通过该地址...
在C语言中,局部变量的作用域只在函数内部,在函数返回后,局部变量的内存就会被释放。如果函数只是返回局部变量,那么这个局部变量会被复制一份传回被调用处。但是如果函数返回的是局部变量的地址,那么就会报错,因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放,这样指针指向的内容就是不可预料的内容,程序就...
当然可以,只是,这里不行。 这里的地址是一个局部变量 str 的地址,我们都知道,局部变量是存储在栈里的,当函数执行时,其中的局部变量会执行压栈操作,但是,当函数执行完毕后,栈中的数据会弹出,以便腾出栈空间。 所以,当函数执行完毕后,指针指向的地址当然是存在的,只是它指向的数据已经不在了。 真的是这样吗? ...
1、返回局部变量的地址 1#include<stdio.h>23int*local_address(void)4{5intnum;6printf("Sub function address: %p\n",&num);7return#8}910intmain(void)11{12int*pn=NULL;13pn=local_address();14printf("Main function address: %p\n",pn);15*pn=100;16printf("*pn = %d\n",*pn);17r...
c语言函数返回局部变量地址。 2. 分析 c语言函数是不能返回局部变量地址(特指存放于栈区的局部变量地址),除非是局部静态变量地址,字符串常量地址、动态分配地址。其原因是一般局部变量的作用域只在函数内,其存储位置在栈区中,当程序调用完函数后,局部变量会随此函数一起被释放。其地址指向的内容不...
这里的地址是一个局部变量 str 的地址,我们都知道,局部变量是存储在栈里的,当函数执行时,其中的局部变量会执行压栈操作,但是,当函数执行完毕后,栈中的数据会弹出,以便腾出栈空间。 所以,当函数执行完毕后,指针指向的地址当然是存在的,只是它指向的数据已经不在了。
1 在visual studio 中打开一个文件。2 然后新建一个函数。3 在函数中创建一个变量。4 然后返回这个局部变量的地址。5 来到主函数中,调用函数并将结果赋值给指针。6 对该指针进行解引用2次。7 最后运行程序,观察结果,可以发现,第二次输出的结果有误,那是因为局部变量是存放在栈区,当函数执行完毕之后,就会...
这段代码非常简单,func 函数返回一个指向局部变量的地址,main 函数中调用 func 函数,获取到指针后将...
C/C++返回局部变量的引用/地址 程序1 下面这段程序,返回局部变量的引用,将其赋给指针p,第一次打印可以输出a的值,第二次便是一个随机数: #include<iostream> using namespace std; int *p = NULL; int& foo() { int a = 10; return a; }
返回局部变量的地址 #include<stdio.h>/*int* fun() {inta;return&a; }intmain() {int* p = NULL; p = fun(); *p =100;//fun函数执行完后,a空间释放,p为野指针 } 返回全局变量的地址 1.在{}外面定义的变量,就是全局变量,全局变量在任何地方都可以使用 ...