当前位置:首页 > 技术知识 > 正文内容

C语言编程经典案例(指针系列一)——一个符号引发的杯具

maynowei10个月前 (09-04)技术知识138

前几期的c语言经典算法,得到了很多朋友的响应,很多期待我不要停更,而小编当然也是一个有理想有道德有人品有颜值的人,当然要把自己的IT编程人生继续下去,所以请大家继续多多关注我们,让我们有动力继续下去。今天,我们逐步深入到c语言的核心地带,被很多C语言学习者誉为C语言终极奥义的指针问题。

其实,对于c指针,我们主要抓住它的本质。指针,就是一个地址。比如同学甲的宿舍是213,则213就可以看成同学甲床铺的一个“指针”,这个指针所指向的“内容”就是同学甲的床铺。理解这点,再加上一定的练习和积累,就可以熟练将指针运用在编程之中了。下面几期我会逐步把一些经典程序案例首发到头条,希望各位朋友指点和讨教,共同进步,就像下面这样,人生是多么美好。

题目:统计一字符串在另一字符串出现的次数。

这个题目涉及到两个字符串,利用指针完成的话,就是让短字符串的首字符和长字符串分别对比,符合一定条件就可以判定找到匹配字符串,计数器加一。不过需要提醒的是,编程中一个小插曲还是值得深思的。下面先贴上代码。

#include<stdio.h>

int count=0;

main()

{

char *sub_str="nb";

char *str="gonbonienbest";

char *p1,*p2;

p1=sub_str,p2=str;

while(*p2!='\0')

{

do

{

if(*p1!=*p2)break;

p1++;p2++;

}while(*p1==*p2);

if(*p1=='\0'){count++;}

p2++;

p1=sub_str;

}

printf("重复次数%d\n",&count);

}

结果,小编满心欢喜,马上运行测试。结果被现实打了一个响亮的巴掌。

什么,重复次数count=4370008?这是绝逼不对啊。问题在哪里?看看程序,分析了下算法部分,没啥问题啊。于是,按下F11,开始调试,调试过程也是相当的顺溜,没啥问题,但是最后的代码,我发现,在调试窗口的count的确是2,原来问题是我把输出部分的count加了一个取地址符号&!!!!去掉这个取地址符号&,就运行正确了!

编程如人生,马虎不得。这就是编程带给我们的重要人生启示之一吧。

相关文章

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

Django 官方推荐的姿势:类视图(django类视图和函数视图哪个好)

作者:HelloGitHub-追梦人物在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理...

Go语言进阶:时间轮(golang时间轮)

时间轮概念时间轮(Timing Wheel)是一种高效的定时任务调度数据结构,特别适合处理大量定时任务。它通过一个循环数组(轮盘)和多个槽位(buckets)来组织定时任务,每个槽位代表一个时间间隔。...

超详细的Oracle19c修改数据库用户名教程

概述由于开发很多视图指定了某个用户名,故需修改数据库用户名srmpro为srm。以下为操作过程..1、停止应用防止修改用户名密码后应用一直在发起错误连接,可事先查询哪个IP在连接数据库,然后断开对应连...

分享收藏的 oracle 11.2.0.4各平台的下载地址

概述oracle 11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址1.1 Linux x...

教你用 Netty 实现一个简单的 RPC

作者:莫那鲁道来源:https://www.cnblogs.com/stateis0/p/8960791.html众所周知,dubbo 底层使用了 Netty 作为网络通讯框架,而 Netty 的高性...