C语言的函数传地址(25)
来源:互联网 发布:mac删除office2011 编辑:程序博客网 时间:2024/05/17 22:58
C语言的函数传地址:
特点:实参和行参共享一个存储单元,对行参的操作相应的就改变了实参,此时参数传递是双向的。
/**//************************************************************
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-06
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/06 1.0 modify xxx .
***********************************************************/
#include <stdio.h>
int abs(int *i)
...{
*i = *i + 1;
return (*i);
}
/**//*
* 返回1为正确执行
* 主函数
*
*/
int main()
...{
int a;
int b;
printf("Please input a number: ");
scanf("%d", &a);
b = abs(&a);
printf("%d", a);
return (1);
}
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-06
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/06 1.0 modify xxx .
***********************************************************/
#include <stdio.h>
int abs(int *i)
...{
*i = *i + 1;
return (*i);
}
/**//*
* 返回1为正确执行
* 主函数
*
*/
int main()
...{
int a;
int b;
printf("Please input a number: ");
scanf("%d", &a);
b = abs(&a);
printf("%d", a);
return (1);
}
通过上面的测试可以发现a的内容同时也发生了改变。
程序分析:
1 a的地址为0x0012ff7c,假设存放2。
2 调用函数 此时i的地址为0x0012ff28。但是其内容由于是传地址。所以为7c。去除前面的偏移等。也就是a的地址。此时i=0x7c。*i就是取其地址对应的内容(2)。
3 此时*i对应的内容就是2。也就是取0x0012ff28对应的地址0x0012ff7c对应的内容2。*i=*i+1;就修改了0x0012ff7c的内容为3。
4 所以打印的结果也为3。
- C语言的函数传地址(25)
- 【C语言】函数的传值与传地址区别
- C语言之函数指针和函数的首地址
- C语言函数不能返回局部变量的地址
- 关于C语言函数的栈结构,返回地址
- C语言函数不能返回局部变量的地址
- C语言函数的取地址符和星号
- C语言 函数之间的地址值传递
- C语言(数组的地址)
- C语言:函数中参数的传值与传地址
- c语言函数参数传地址时容易发生的错误
- C语言 函数调用传数组首地址
- C语言函数传值传地址规则
- C语言的地址传递
- 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)
- C语言的内存与地址(C和指针)
- 数据结构第二周项目1--C/C++语言中函数传递的三种方式之方法二传地址
- 第二周项目一C/C++语言中函数传递的三种方式之方法二传地址
- 1.《The Leon Professional》
- 大学学什么,我想应该学自己走出学校后最需要却最难学明白的知识
- php.ini 配置详细选项
- 探讨SQL Server 2005.NET CLR编程
- 让getElementsByName适应IE和firefox
- C语言的函数传地址(25)
- 30岁前的男人,需要完成的事
- WPARAM与LPARAM 之区别
- 看黑客如何避开安全设备
- web.config
- 递归与非递归解决组合问题
- C#编程技巧集之--使用C#轻松编写.Net组件
- CDMA 机卡一体手机写号入网的两种方式
- CDMA手机鉴权的过程说明