#include <stdio.h>
int main(){
int n = 1;
printf("实参n的值:%d,地址:%#x\n", n, &n);
void change(int i);//函数声明
change(n);
printf("函数调用后实参n的值:%d,地址:%#x\n", n, &n);
return 0;
}
void change(int i){
printf("形参i的值:%d,地址:%#x\n",i,&i);
i++;
printf("自增操作后形参i的值:%d,地址:%#x\n",i,&i);
}
实参n的值:1,地址:0x5fcb0c 形参i的值:1,地址:0x5fcae0 自增操作后形参i的值:2,地址:0x5fcae0 函数调用后实参n的值:1,地址:0x5fcb0c
#include <stdio.h>
void change(int * i){
printf("形参i的值:%#x,地址:%#x\n",i,&i);
(*i)++;//通过指针修改其所指空间的值
i++;//让指针指向下一块内存空间
printf("自增操作后形参i的值:%#x,地址:%#x\n",i,&i);
}
int main(){
int n = 1;
int * p = &n;
printf("n的值:%d,地址:%#x\n", n, &n);
printf("实参p的值:%#x,地址:%#x\n", p, &p);
change(p);
printf("函数调用后实参p的值:%#x,地址:%#x\n", p, &p);
printf("函数调用后n的值:%d,地址:%#x\n", n, &n);
return 0;
}
n的值:1,地址:0x5fcb0c 实参p的值:0x5fcb0c,地址:0x5fcb00 形参i的值:0x5fcb0c,地址:0x5fcae0 自增操作后形参i的值:0x5fcb10,地址:0x5fcae0 函数调用后实参p的值:0x5fcb0c,地址:0x5fcb00 函数调用后n的值:2,地址:0x5fcb0c
#include <stdio.h>
void arrArg(int arr[]){
printf("形参arr的值:%#x,地址:%#x\n", arr, &arr);
printf("sizeof(arr):%d, sizeof(int *):%d\n",sizeof(arr), sizeof(int *));
printf("sizeof(arr[0]):%d,sizeof(int):%d\n", sizeof(arr[0]), sizeof(int));
printf("*arr:%d,arr[0]:%d\n", *arr, arr[0]);
printf("*(arr+1):%d,arr[1]:%d\n", *(arr+1), arr[1]);
printf("arr+1:%#x,&arr[1]:%#x\n",arr+1, &arr[1]);
arr++;
printf("自增操作后形参arr的值:%#x,地址:%#x\n",arr, &arr);
printf("自增操作后,*arr:%d, arr[0]:%d\n",*arr, arr[0]);
}
int main(){
int a[] = {1,2,3};
printf("实参a的值:%#x,地址:%#x\n",a,&a);
printf("sizeof(a):%d,sizeof(a[0]):%d\n",sizeof(a),sizeof(a[0]));
arrArg(a);
return 0;
}
实参a的值:0x5fcb00,地址:0x5fcb00 sizeof(a):12,sizeof(a[0]):4 形参arr的值:0x5fcb00,地址:0x5fcae0 sizeof(arr):8, sizeof(int *):8 sizeof(arr[0]):4,sizeof(int):4 *arr:1,arr[0]:1 *(arr+1):2,arr[1]:2 arr+1:0x5fcb04,&arr[1]:0x5fcb04 自增操作后形参arr的值:0x5fcb04,地址:0x5fcae0 自增操作后,*arr:2, arr[0]:2
void func(int arr[]){
}
void func(int * p){
}
//形参arr的指定长度5无意义,会被编译器忽略,未防止误解建议不写
void arrArg(int arr[5]){
// sizeof(arr)是指针类型的大小而非数组大小,因此len不是数组长度
int len = sizeof(arr)/ sizeof(arr[0]);
}
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
void func(enum weekday){}
void func(int i){}
#include <stdio.h>
struct Date{
int year;
int month;
int day;
};
void changeStruct(struct Datedate){
printf("形参date的地址:%#x\n", &date);
date.year ++;
date.month = 12;
date.day = 31;
printf("形参date的值:%d-%d-%d\n",date.year,date.month,date.day);
}
union Data{
int i;
float f;
double d;
};
void changeUnion(unionDatadata ){
printf("形参data的地址:%#x\n", &data);
printf("形参data的值,d.i:%d, d.f:%f, d.d:%f\n",data.i,data.f,data.d);
data.d = 2017.4;
printf("函数调用后,形参data的值,d.i:%d, d.f:%f, d.d:%f\n",data.i,data.f,data.d);
}
int main(){
printf("结构体参数传递示例:\n");
struct Datedate = {2017,4,2};
printf("实参date的地址:%#x\n", &date);
printf("实参date的值:%d-%d-%d\n",date.year,date.month,date.day);
changeStruct(date);
printf("函数调用后,实参date的值:%d-%d-%d\n",date.year,date.month,date.day);
printf("共用体参数传递示例:\n");
unionDatadata={.i=2017};
printf("实参data的地址:%#x\n", &data);
printf("实参data的值,d.i:%d, d.f:%f, d.d:%f\n",data.i,data.f,data.d);
changeUnion(data);
printf("函数调用后,实参data的值,d.i:%d, d.f:%f, d.d:%f\n",data.i,data.f,data.d);
return 0;
}
结构体参数传递示例: 实参date的地址:0x5fcb00 实参date的值:2017-4-2 形参date的地址:0x5fcae0 形参date的值:2018-12-31 函数调用后,实参date的值:2017-4-2 共用体参数传递示例: 实参data的地址:0x5fcaf0 实参data的值,d.i:2017, d.f:0.000000, d.d:0.000000 形参data的地址:0x5fcab0 形参data的值,d.i:2017, d.f:0.000000, d.d:0.000000 函数调用后,形参data的值,d.i:-1717986918, d.f:-0.000000, d.d:2017.400000 函数调用后,实参data的值,d.i:2017, d.f:0.000000, d.d:0.000000
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有