c语言:指针变量的实参与形参 |
您所在的位置:网站首页 › C语言中形参可以是 › c语言:指针变量的实参与形参 |
最近遇到一个坑,让我对实参和形参有了更深的了解。 假如在main方法中有一个指针变量p,它指向的内存地址为20000。现在将它传递到一个函数中,在这个函数里让它指向内存地址为20048。当函数执行完返回到main函数时,p所指向的地址还是20000,而不是20048。 看下面的代码: #include void A(int* p){//此处p为形参 int x = 3; p = &x; printf("在函数中p中的地址为%d\n\n",p); } int main(){ int e = 9; int* p = &e; //此处p为实参 printf("main:p中的地址为: %d\n\n",p); A(p); printf("main:p中的地址为: %d\n\n",p); return 0; }
其中的原理实际上涉及到形参和实参这两个概念: 实参出现在主调函数中, 形参出现在函数定义中。 形参在整个函数体内都可以使用, 当改变形参的值的时候,并不会改变实参的值。 就像一个普通的变量,当将其传递到函数当中处理的时候,主函数中变量的值不会改变一样,指针变量说白了也是变量,同样遵循这个规则。 之所以掉进这个坑里,还是将指针变量与指针混淆的原因,在函数中直接改变指针变量中地址所指向的内容,会改变函数外面指针所指向变量的值。但是在函数中改变指针变量的值,不会改变函数外面指针变量的值。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |