C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/22 02:09:45
![C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf(](/uploads/image/z/8656957-37-7.jpg?t=C%E8%AF%AD%E8%A8%80%E7%9A%84%E5%87%BD%E6%95%B0%2C%E4%BE%8B%E5%A6%82%2C%E5%A6%82%E4%B8%8B%E7%9A%84%E5%87%BD%E6%95%B0%2C%E6%88%91%E7%9A%84%E9%97%AE%E9%A2%98%E6%98%AF%2C%E6%98%AF%E4%B8%8D%E6%98%AF%E5%8F%AA%E6%9C%89%E5%9C%A8%E8%B0%83%E7%94%A8%E5%87%BD%E6%95%B0%E6%97%B6%2C%E6%89%8D%E4%BC%9A%E7%BB%99%E5%87%BD%E6%95%B0%E9%87%8C%E7%9A%84%E5%8F%98%E9%87%8F%E5%88%86%E9%85%8D%E5%86%85%E5%AD%98%E7%A9%BA%E9%97%B4.%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E5%AE%8C%E6%AF%95%E5%90%8E%2C%E5%85%B6%E5%8F%98%E9%87%8F%E7%9A%84%E5%86%85%E5%AD%98%E7%A9%BA%E9%97%B4%E5%B0%B1%E9%87%8A%E6%94%BE%3Fvoid+add%28int+x%29%7B%5Cx09int+y%3Dx%2B1%3B%5Cx09printf%28%22%26x%3D%25d+%2C%26y%3D%25d+%2Cx%3D)
C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=
C语言的函数,
例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?
void add(int x)
{
\x09int y=x+1;
\x09printf("&x=%d ,&y=%d ,x=%d ,y=%d\n",&x,&y,x,y);
}
C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=
C语言里面,
全局变量在程序一启动就分配好内存,程序结束时释放.
局部变量(函数里面的临时变量),在该函数执行时创建,函数执行完就释放.
解读:LZ这个问题主要牵涉的是堆栈的知识 每一个线程在执行的时候都有自己的一个堆栈结构.
代码执行进入一个函数,可以认为是进入一个栈,那么函数里面的变量都是在栈里面创建,代码执行完函数,退到调用函数的地方时,这个栈就消亡,所有变量也就消亡了.
而使用new 创建的数据,是创建在堆上的,堆不会受栈的消亡而释放,所以函数执行完了,里面new的数据依然有效,必须手动delete才能释放(c++ 里面的new 和 delete 对应 C里面的 malloc,free)