C
文章平均质量分 68
wxhhkhl
喜欢交朋友~
展开
-
内存访问越界(转)
<br />1. 原理分析<br />经常有些新C++程序员问:C++的类的成员个数是不是有限制,为什么我加一个变量后程序就死了?或者说:是不是成员变量的顺序很重要,为什么我两个成员变量顺序换一换程序就不行了?凡此种种之怪现象,往往都是内存访问越界所致。<br />何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明申请的是100字节的空间,但是你由于某种原因写入了120字节,这就是内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。<b原创 2011-01-08 13:10:00 · 499 阅读 · 0 评论 -
由一道程序员面试宝典引出的问题-printf如何读入浮点数!
<br />在讲这个题目之前,预备知识,讲一下,printf函数,输入参数是读入缓冲区保存,再按照%?的格式从缓冲区中读出数据,并据此格式解释数据。<br />有了这个知识之后,在讲程序员面试宝典上看到一个题:<br />view plaincopy to clipboardprint?<br />#include "stdio.h" <br />int main(int argc, char* argv[]) <br />{ <br /> printf("%d/n",5.01); <转载 2011-01-08 13:48:00 · 573 阅读 · 0 评论 -
putchar()和getchar()函数的一些简单实用实例!
单个字符输入:getchar()函数是用来从文本流中获得一个字符,并把获得的字符作为函数值返回。单个字符输出:putchar(c)是讲整型变量(字符)c的内容以字符的形式打印出来,通常是显示在屏幕上。1.一次输入一个字符,并依次把输入的字符输出。#includemain(){int c;c=getchar();//getchar()函数得到一个从键盘上输入的字符,并把得到的字符作为函数值返回送给整型变量cwhile(c!=EOF)//EOF是一字符常量,值为-1,作为文本文件结束的标志(以EOF为结束标志的原创 2011-01-11 22:30:00 · 4069 阅读 · 1 评论 -
求m的n次幂函数pow的简单写法!
说明,该函数并非一个使用的求幂函数, 由于定义的均为int整型变量,故只能处理较小的正整数次幂,对于较大的数结果可能溢出,导致最后结果不正确,但是通过这个程序改写出一般通用的求幂函数。程序如下:#includeint pow1(int m,int n)//测试求幂函数,用于计算整数m的n次幂{ int i,p=1; for(i=1;i p=p*m; return p;}main(){ int x,y,s; printf("请分别输入求整数m的n次幂的m和n的值/n"); scanf原创 2011-01-14 14:19:00 · 5214 阅读 · 0 评论 -
字符数组的使用-读入一文本行,并把最长的文本行打印出来。
思路如下: while(还有未处理的行) if(该行比已处理的最长行还要长) 保存改行 保存该行的长度 打印最长的行 这里使用了两个自己编写的子函数getline和copy1函数,getline()函数用来读取文本行中的每一行并返回长度,copy1()函数用来把目前读取的最长行保存到指定的longest字符数组中。程序如下:#include#define MAXLINE 1000int getline(char line[],int maxline);//getline()函数声明void co原创 2011-01-14 15:36:00 · 1155 阅读 · 1 评论 -
字符串与整型数的相互类型转化-atoi和itoa的简单写法~
1、将一串数字字符串转换为相应的整型数,即字符串转换为整型数,atoi函数写法:atoi函数的写法,将一数字字符串转换为相应的整数,程序如下:#includeint atoi(char *s){ int n=0,i; for(i=0;s[i]>='0'&&s[i] n=n*10+s[i]-'0';//将字符串转换为整型数字 return n;}main()//主函数测试atoi函数{ char s[10]="263"; printf("%d/n",atoi(s));原创 2011-01-15 16:03:00 · 1529 阅读 · 0 评论 -
strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
1、strcat函数的实现方法(1)数组实现方法: #include void strcat1(char s[],char t[]) { int j=0,i=0; while(s[i]!='/0')//判断是否为字符串s的末尾 i++; while((s[i]=t[j])!='/0') i++,j++; } main()//主函数,用于测试strcat函数的功能 { char s[20]="i love ";//字符数组s应定义足够的长度,以便能装入连原创 2011-01-15 17:17:00 · 3151 阅读 · 0 评论 -
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
<br />程序如下:#include<stdio.h><br />int Sum(int n)<br />{ <br /> return ((long)1+n)*n/2;//或者return (1l+n)*n/2;<br />}<br />main()<br />{ <br /> int n;<br /> scanf("%d",&n);<br /> printf("1到%d的和是:%d/n",n,Sum(n));<br />}<br /> 写成这样子,而不写成下面用for循环原创 2011-01-15 21:05:00 · 2599 阅读 · 0 评论 -
字符串倒置函数reverse()的简单写法!
倒置字符串函数reverse:用于倒置字符串s中的各个字符的位置,如原来字符串中如果初始值为123456,则通过reverse函数可将其倒置为654321,程序如下:#include#includevoid reverse(char s[]){ int c,j,i; for(i=0,j=strlen(s)-1;i { c=s[i]; s[i]=s[j]; s[j]=c; }}main()//主函数,用于测试reverse函数的功能{ char s[]="123456"; reverse(s原创 2011-01-15 16:09:00 · 5505 阅读 · 1 评论