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

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

maynowei6个月前 (09-04)技术知识67

前几期的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加了一个取地址符号&!!!!去掉这个取地址符号&,就运行正确了!

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

相关文章

登录注册产品需求自检清单,你都写全了没?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。自己挖的坑一定要让别人给填好!一、登录(从PC端到移动端)移动端的登录沿袭了很多PC端的经验,但也有其独特的演变,我收...

如何优雅地使用嵌入式事件标志组?

事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发...

分析 Rust 程序的火焰图(rust火吗)

分析 Rust 程序的火焰图(Flame Graph)是定位性能瓶颈的核心手段,其核心是通过可视化的函数调用栈和时间分布,找到 CPU 耗时、内存分配、锁竞争等热点。以下是详细的分析方法和步骤,结合...

如何正确理解Java领域中的并发锁,我们应该具体掌握到什么程度?

苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》写在开头对于Java领域中的锁,其实从接触Java至今,我相信每一位Java Developer都会有这样的一个...

centos系统安装oracle简易客户端instantclient

一、目录1:centos 环境准备2:instant client 下载3:instant client 安装4:instant client 配置5:测试连接二、安装步骤1:zip,unzip命令安...

本地配置plsql远程连接oracle数据库

由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql、toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持。最后终于发现一个很有效的方法,O...