指针的值传递
#include<stdio.h>
void plus(int a)
{
a++;
printf("调用函数a = %d\n",a);
printf("调用函数中a的地址为%d\n", &a);
}
void plus2(int* p)
{
++ *p;//= *p + 1;
printf("plus2 p指向的地址为%d\n", p); //p指向的地址
printf("p解引用的值为%d\n", *p);
}
int main(void)
{
int a = 5;
plus(a);
printf("a = %d\n", a);
printf("主函数中a的地址为%d\n", &a);
plus2(&a);
printf("a = %d\n", a);
return 0;
}
/*
调用函数a = 6
调用函数中a的地址为12058092
a = 5
主函数中a的地址为12058304
plus2 p指向的地址为12058304
p解引用的值为6
a = 6
C:\Users\Administrator\Desktop\vs\Project6\Debug\Project6.exe (进程 17496)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口...
*/
自上而下的是,堆,栈,全局变量,代码文本。
函数都在栈,形参的生命周期旨在调用函数里面全局变量的生命周期是全局的
函数调用完毕在栈分配的空间也会消除,只有主函数的空间是不会被消除的
而地址是内存中变量储存的位置,而指针就是储存了地址所以可以直接操纵内存