C语言指针使用的几个场景

之前的文章与各位谈论了指针是什么,以及指针为何这那么难学。不少知友留言说看了我的文章对指针了解了不少,这给我继续创作提供了莫大的动力啊。指针其实就是一个纸老虎,你看着可怕,等你了解其本质后,你会对其不屑的。

这一篇来聊聊为什么要用指针,或者说,在什么场景下必须要用指针,也就是给我们一个学习指针的理由,否则为何要去学指针,那不神经病嘛。本文列举了两个需要用到指针的场景,可以留言继续补充。

分享之前我还是要推荐下我自己建的C/C++开发学习群:【二四八,八九四,四三零】,都是学C/C++开发的,如果你正在学习C/C++ ,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有C/C++软件开发相关的),包括我自己整理的一份2018最新的C/C++零基础资料和C/C++进阶教程,欢迎进加入前面我写过一篇文章谈了自己的C/C++学习经验(我学C/C++的经验),里面谈到"技巧宛如一颗一颗珍珠",后台有好几个小伙伴留言,能不能分享一些技巧. 其实我的企鹅号里面多多少少分享过一些,今天我分享一些自己私藏的非常不错的技巧和代码给大家,希望对大家有用!

C/C++游戏编程比较系统的学习路线

c语言入门 程序设计-算法-运算符-顺序 分支 循环结构。C语言精通 数组-函数字串符

-指针-构造类型-预处理-存储管理-文件操作-数据结构。c++入门 面对对象编程-类和对象-运算符重载

-派生于继承,异常处理技术-C++语言 11标准-数据结构-(双向链表-双向队列-树-图)。c++精通

stl标准模板库(容器-迭代器-算法)正则表达式-boost标准模板库-socket网络编程-大型企业项目实战:

-员工信息管理系统-推箱子-俄罗斯方块-服务器-播放器-人工智能。windows高级工程师:win32/mfc

-windows高级编程-QT框架编程-大型企业级项目实战项目(人脸识别-车牌识别-局域网远程监控-等项目)

linux系统应用程序开发-linux内核构架研究-linux顶级网络服务器开发及搭建。大型企业项目实战

(linux内核高级虚拟内存驱动设计-linux网络间谍系统软件-linux内核网络数据劫持-linux网络阅读系统开发

等等)上述学习6个月时间左右,如果一天高效率用6个小时学习,加油奋吧,骚年们!

1. 数组处理

数组处理是最需要用到指针的,其中一个场景的程序代码如下:

#include "stdio.h"

sort(参数)

{

//代码实现

}

int main(void)

{

int number[5] = ;

printf("数组元素原来的顺序是:\n");

for(int index = 0; index

{

printf("%d ", number[index]);

}

sort(参数);//给数组排序,数组元素由大到小

printf("数组元素排序后的顺序是:\n");

for(int index = 0; index

{

printf("%d ", number[index]);

}

return 0;

}

代码很简单,想在函数sort中实现对数组元素由大到小的排序。那么如果你不想给sort函数传递指针的话,那你给函数sort传递什么参数呢?

2. 两值交换

两值交换在各大考试中是考的最多的了,比如如下程序:

#include "stdio.h"

change(参数)

{

//代码实现

}

int main(void)

{

int para1 = 1;

int para2 = 2;

change(参数);//在change函数中实现para1和para2的值交换

printf("交换值后,para1的值是%d, para2的值是%d\n", para1, para2);

return 0;

}

代码中,定义了两个int变量,要在change函数中实现两者的值的交换,如果不考虑指针的话,有什么办法能做到吗?

也许还有其它的很多例子可以用来说明使用指针的必要性,结合上述两个例子来看,在程序中,有时候我们必须要操作内存,此时使用指针就是最好的选择。

明白了使用指针的必要性,我们才有理由学习指针,并且学好它。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180201A12YIU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券