指针之函数的参数是数组的时候的本质
2015-09-03 20:23
288 查看
如果一个函数的参数是一个数组,那么他传递的是数组的地址,所以我们形参可以用一个指针类型的变量来接受这个数组的地址
看看如下代码 体会一下:
这是一个数组的遍历的代码,因为arr[]这个数组,arr是一个地址,那么我们当然可以用一个指针来接受用户传递过来的地址了。
我们也可以通过传递指针来改变变量的值:
还有交换两个变量的值:
看看如下代码 体会一下:
#include <stdio.h> void test(int *p1,int length) { for (int i = 0; i <length; i++) { printf("%d\n",*(p1+i)); } } int main(int argc, const char * argv[]) { int arr[] = {10,20,30,40}; int length = sizeof(arr)/sizeof(arr[0]); test(arr,length); return 0; }
这是一个数组的遍历的代码,因为arr[]这个数组,arr是一个地址,那么我们当然可以用一个指针来接受用户传递过来的地址了。
我们也可以通过传递指针来改变变量的值:
void test2(int *p1,int *p2) { *p1 = *p2; } int main(int argc, const char * argv[]) { int num1 = 10; int num2 = 20; int *p1 = &num1; int *p2 = &num2; test2(p1, p2); printf("num1 = %d\n",num1); return 0; }
还有交换两个变量的值:
void test2(int *p1,int *p2) { int temp = *p1; *p1 = *p2; *p2 = temp; } int main(int argc, const char * argv[]) { int num1 = 10; int num2 = 20; int *p1 = &num1; int *p2 = &num2; test2(p1, p2); printf("num1 = %d,num2 = %d\n",num1,num2); return 0; }
相关文章推荐
- 2015 ACM多校训练第三场
- 跨域调用webapi
- 偶遇问题 - - 空格导致行内元素水平间隔问题
- linux命令进阶小记
- 最大公约数Stein算法之verilog实现
- LCS (最长公共子序列)
- Cocos2d-x xml解析
- 关于ListView的优化!
- 【extern】如何使用关键字extern "C"?
- ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager
- Delphi考虑sql注入 QuotedStr
- Block Formatting Contexts
- 思维值惰性
- hdoj 1385 Minimum Transport Cost
- Maven系列2--pom.xml 配置详解
- js数据结构与算法存储结构
- Redis安装
- 【英语】Bingo口语笔记(62) - 生气道歉场景的表达
- IOS SWIFT 简单操作文件
- POJ 2125 Destroying The Graph(二分图最小点权覆盖)