【C语言】指针到底有什么用?
2021-01-16 01:15
标签:lan wap main 学习 scan 结果 type include name 很多初学者(包括我),学习指针的时候总有这样一个疑问:指针到底有什么用?只是多了一种访问变量的方法而已,有这么重要么? 交换失败。 交换成功。 为啥 没有成功赋值。 成功赋值。 可见,使用结构体指针的空间开销比直接使用结构体变量要小。 【C语言】指针到底有什么用? 标签:lan wap main 学习 scan 结果 type include name 原文地址:https://www.cnblogs.com/HuZhixiang/p/12932494.html举个例子:通过函数交换两个整型变量的值
初学者一般都会这么写
#include
输出结果
1, 2
为啥呢?
不知道的同学可以补习一下变量的作用域相关知识。使用指针交换
#include
输出结果
2, 1
为啥呢?
因为 Swap()
函数传入的是两个指针,有了指针,就可以冲出 Swap()
函数,拿着指针找变量了。再举个例子:
scanf()
函数scanf()
函数传入的是指针而不是变量本身呢?我们模拟一下
#include
输出结果(不同的编译器下可能不同)
4198575
使用指针赋值
#include
输出结果
1
所以,指针是连接主调函数和被调函数的桥梁。
再举个例子:将结构体作为函数参数
有如下代码
#include
输出结果
sizeof(stu)=12
我是小明,年龄是10,成绩是90
stu
结构体变量占用了12个字节,在调用函数时,需要原封不动地将12个字节传递给形参。如果结构体成员很多,传送的时间和空间开销就会很大,影响运行效率。
那怎么样才能减少时间和空间开销呢?使用结构体指针
#include
输出结果
sizeof(stu)=12, sizeof(pstu)=4
我是小明,年龄10岁,成绩是90
所以,使用指针可以使时间和空间开销更小。