值传递和地址传递
1. 简介
- C语言传递参数 (或者赋值)可以是值传递,也可以是传递指针,传递指针也叫地址传递
- 默认传递值的类型:基本数据类型(整数类型,小数类型,字符类型),结构体,共用体
- 默认传递地址的类型:指针,数组
2.值传递和指针传递的使用特点
2.1 值传递
- 将变量指向的存储内容,在传递/赋值时,拷贝一份给接受变量
2.2 地址传递
- 也叫指针传递,如果是指针,就将指针变量存储的地址,传递给接受变量,如果时数组,就将数组的首地址传递给接收变量。
- 代码演示
#include <stdio.h>
void main(){
int num = 10;
int *p = #
int * p2 = p;
*p2 = 55;
printf("num=%d *p=%d *p2=%d",num,*p,*p2);
getchar();
}
#include <stdio.h>
void main(){
char name[10] = "张三";//字符数组,存放字符串
short age = 23;
float score = 78.5f;
char gender = 'M';
char hobby[30] = "篮球,足球";
printf("姓名\t年龄\t成绩\t性别\t爱好\n%s\t%d\t%.2f\t%c\t%s",name,age,score,gender,hobby);
getchar();
}
void main(){
int number1;
int number2;
int number3;
int number4 = 50;
int number5;
number1 = 10;
number2 = 20;
number3 = number1 + number2;
printf("number3 = %d",number3);
number5 = number4 - number3;
printf("number5 = %d",number5);
getchar();
}
#include <stdio.h>
void main(){
int n1 = 10;
int n2 = 5;
int sum = n1 + n2;
int sub = n1 - n2;
int mul = n1 * n2;
int div = n1 / n2;
int mod = n1 % n2;
int num = 10;
printf("***************************");
printf(" 计算器");
printf("***************************");
printf("%d + %d = %d",n1,n2,sum);
printf("%d - %d = %d",n1,n2,sub);
printf("%d * %d = %d",n1,n2,mul);
printf("%d / %d = %d",n1,n2,div);
printf("%d % %d = %d",n1,n2,mod);
//判断num是奇数还是偶数
if(num % 2 == 0){
printf("%d 是偶数",num);
}else{
printf("%d是奇数",num);
}
getchar();
}