数组做函数参数退化为指针
2015-12-31 10:25
357 查看
#include "stdio.h" #include "stdlib.h" #include "string.h" void printfArray(int *a) { int i = 0; for (i=0; i<10; i++) { printf("%d ", a[i]); } } //1.数组做函数参数,会退化为指针 void printfArray2(int *a, int num) { int i = 0; for (i=0; i<num; i++) { printf("%d ", a[i]); } } //2.在形参里面出现的char buf[30] int a[10] c/c++编译器会把它当做指针,也不会主动的多分配内存 //编译器在处理传参的时候不是复制整个数组,而是将数组转化为指针,所以数组作为参数的时候会退化为指针 void printfArray3(int a[10]) { int i = 0; int num1 = sizeof(a);//4 int num2 = sizeof(*a);//4 int num = sizeof(a)/sizeof(*a);//1 printf("num1:%d, num2:%d, num:%d \n", num1, num2, num); for (i=0; i<num; i++) { printf("%d ", a[i]); } } void main() { int i = 0, j = 0; int a[10] = {1, 3, 44, 2, 3, 44, 5, 5,6, 67}; int tmp = 0; int num1 = sizeof(a); //数据类型不一样 printf("\n排序之前 %d:", num1); // for (i=0; i<10; i++) // { // printf("%d ", a[i]); // } printfArray3(a); for(i=0; i<10; i++) { for (j=i+1;j<10; j++) { if (a[i] < a[j]) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } printf("\n排序之后:"); // for (i=0; i<10; i++) // { // printf("%d ", a[i]); // } printfArray3(a); system("pause"); }
相关文章推荐
- Network Link Conditioner模拟不同的网络环境。
- 全站HTTPS来了!有何优势、与HTTP有何不同?
- Netty 4 传输对象 - 纵酒挥刀斩人头
- 151205ArrayDemo2
- 基于CAJViewer的学术文献使用技巧
- NSNotificationCenter
- Android版添加phonegap--Sqlite实现离线功能技术教程
- IOS----Objective-C中JSON解析与XML解析
- asmlib方式管理oracle asm环境下,新加存储需特别注意
- MyEclipse10的注册之路
- 12.创建主题
- QPushButton按回车发射信号或者界面的回车按键响应
- 151205ArrayDemo
- 151205FunctionOverloadDemo
- 关于BigDecimal的四舍五入和截断 (2007-08-10 15:06:26)
- Java位运算符
- [转]安卓开发startservice 和bindservice详解
- 用Android UEventObserver监听内核event
- hibernate-validator实现入参校验(包含get与post)
- Sublime Text 3