【C语言 】指针不难,函数传参

别问学这个有什么用,学了你就是牛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;
}

作者希望所有读者能够坚持学下去,发现其中乐趣!敬请期待...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值