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

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

maynowei9个月前 (09-04)技术知识126

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

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

相关文章

CPU「离奇」飙到 100%!开发者挖出 Linux 内核 16 年老 Bug:这么多年竟无人发现?

【CSDN 编者按】每一次对旧设备的升级都仿佛是一场跨越时代的冒险。本文作者致力于将基于 PXA166 的 Chumby 8 设备从 Linux 2.6.28 版本升级到现代 6.x 版本,然而,在看...

关于异步信号安全(下面关于异步电路危害的描述错误的是)

线程安全与重入以及异步信号安全的区别. 可重入一定是线程安全的,但是线程安全不一定是可重入的. 引用别人的博客中的话吧.如下: http://blog.csdn.net/xiaofei0859/art...

C语言编写多线程,什么时候要使用互斥锁?为什么要使用互斥锁?

在多线程编程中,当多个线程同时访问共享资源(如变量、文件等)时,会出现竞态条件(Race Condition)问题,导致程序的行为不可预测。为了避免这种问题,需要使用互斥锁来保护共享资源的访问。互斥锁...

Oracle数据库云服务系列新增前所未有的企业级功能

新推出的关键任务型功能包括:实现容错可用性和按需可扩展性的集群;零数据丢失灾难恢复;Oracle数据库Exadata云服务。甲骨文还宣布推出一项最新免费数据库云服务,数据库管理员和开发人员通过该服务可...

oracle和mysql的优缺点对比(oracle和mysql哪个简单)

oracle的优缺点优点:开放性:oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持;可伸缩性,并行性:Oracle...

见招拆招:破解Oracle数据库密码(oracle数据库如何解锁)

一.概要本文主要目的,希望通过分享解密方法引起相关人士对网络安全的重视。数据库安全绝不单只数据库本身的安全,和数据库所处的整个环境都有密切关系。本文所说的破解oracle9i、oracle10g、or...