别问学这个有什么用,学了你就是牛x的人
指针:虽然说学了可以装,但是它真的可以提高程序执行效率。作者不爱说指针就是地址,所以...,反正同一个程序你不用指针要5ms,但我用指针只要2ms
想代码转的更快吗,想一秒变超人吗,想在同学面前装x吗,那还不开学!
传参好比抄作业:
① 我先拷贝一份,把拷贝版给你抄(抄山寨版)
void text(int x); // 抄山寨
② 直接把我作业给你抄(抄原版)
void text(int* x); // 抄原版
大白话:抄原版是有风险的,你在我作业上涂改怎么办(懵b了吧,继续看...)
专业语:指针传参有风险,在所传函数中,原变量会有被改变的风险
1. int, char, ...类型传参案例:
用int类型举例:(对比1,2)
#include <stdio.h> // 1
// 普通函数传参
int add(int x, int y)
{
return ++x + y; // 前置++是先++再使用
}
int main(void)
{
int a = 10;
int b = 18;
printf("a= %d\n", a);
add(a, b);
// 传的不是a本身,是先把a拷贝一份给x,再是用x,a是没有被使用的在add里
printf("a= %d\n", a);
// 观察a的值
return 0;
}// a的值无变化
2. int*,char*,...类型传参案例:
用int*类型举例:(对比1,2)
#include <stdio.h> // 2
// * 叫引用变量符(简引用)
int add(int* x, int* y)
{
return ++*(x) + *y; // 前置++是先++再使用
}
int main(void)
{
int a = 10;
int b = 18;
printf("a= %d\n", a);
add(&a, &b);
// &a 是直接传a,使用的就是a本身,不是x,此时*x就是是a
printf("a= %d\n", a);
// 观察a的值
return 0;
}// a的值变化了
3. 有关struct类型传参案例:
先看懂1和2,struct就秒懂了
#include <stdio.h>
typedef struct Student
{
char name[10];
int age;
char sex[4];
}StudentTypeDef;
void my_print(StudentTypeDef p)
{
printf("%s ", p.name);
printf("%d ", p.age);
printf("%s ", p.sex);
}
int main(void)
{
StudentTypeDef s1 = { "张三", 18, "男" };
my_print(s1);
return 0;
}
4. 有关struct* 类型传参案例:
#include <stdio.h>
typedef struct Student
{
char name[10];
int age;
char sex[4];
}StudentTypeDef;
void my_print(StudentTypeDef* p)
{
printf("%s ", p->name);
printf("%d ", p->age);
printf("%s ", p->sex);
}
int main(void)
{
StudentTypeDef s1 = { "张三", 18, "男" };
my_print(&s1);
return 0;
}
作者希望所有读者能够坚持学下去,发现其中乐趣!敬请期待...