
C语言
wjy320
这个作者很懒,什么都没留下…
展开
-
字符数组
在C语言中,看如下两个式子有何不同? char* p1="hello"; char p2[]="hello"; 对于第一个式子:是无需开辟内存空间存储"hello",字符串常量存储在静态区(好像是),p1是一个指针直接指向该区域的这个字符串常量即可。 对于第二个式子:需要专门开辟6个字符的内存区域(最后一位是'\0')以存储"hell...原创 2014-02-26 09:02:50 · 149 阅读 · 0 评论 -
大整数减法
#include "StdAfx.h"#include "subStr.h"#include<iostream>using namespace std;#define MAX_LENTH 201void sub(int len,int *bigNumA,int *bigNumB){//以下为执行逐位相减;tag记录进位 int i,tag=0...原创 2014-03-10 16:08:32 · 93 阅读 · 0 评论 -
大整数乘法
在计算机中,长整型(long int)变量的范围是 -2147483648 至 2147483647,因此若用长整型变量做乘法运算,乘积最多不能超过 10位数。即便用双精度型(double)变量,也仅能保证 16 位有效数字的精度。在某些需要更高精度的乘法运算的场合,需要用别的办法来实现乘法运算。 比较容易想到的是做多位数乘法时列竖式进行计算的方法,只要写出...原创 2014-03-10 17:12:28 · 121 阅读 · 0 评论 -
C语言二维数组很好的资料
在附件中。太好了。秒懂。原创 2014-03-17 10:56:50 · 105 阅读 · 0 评论 -
递归实现倒序打印数组元素
要想倒序打印,第一个想到的就是使用栈实现:将元素按照顺序都压入栈中,依次弹出并打印就实现了倒序打印。 大家想一想,其实递归就是天生的栈结构。所以,使用递归来实现数组的倒序输出,虽然效率可能不太好。 代码1...原创 2014-03-19 09:40:36 · 1206 阅读 · 0 评论 -
函数参数中的数组和指向数组的指针
大家在向函数中传递数组的时候,一般有两种方式形参模式。 1:传递数组:例如函数定义为:void fun(int array[100]) 则可以这样传递实参:int array[100]={0}; ...原创 2014-03-24 15:02:29 · 161 阅读 · 0 评论 -
看一下typedef和#define的一个区别
首先看一下下面的两种定义,想想会有什么不同: 第一种定义:宏定义,以FU表示int*(在编译时就替换了)#define FU int* 第二种定义:typedef int* FU; 好了,应用以上的FU分别定义变量有什么区别呢? FU i,j; 如果使用第一种定义,则 i 是一个int型...原创 2014-04-01 09:09:40 · 96 阅读 · 0 评论 -
逆序字符串
最近准备找工作了,看了个上机题,随便写出来看看:int main(){ char *str=(char *)malloc(100); scanf("%s",str); char *tail,*head; head=str; tail=str; while(*tail!='\0') { tail++; } tail--; ...原创 2014-04-01 11:18:30 · 102 阅读 · 0 评论 -
(转)typedef和#define的区别
截图如下原创 2014-04-04 15:15:15 · 84 阅读 · 0 评论 -
sizeof结构体分析
最近看书总是遇到定义一个结构体,然后问你sizeof(此结构体)的值是多少? 本人看了看<<深入理解计算机系统>>一书,由做了些实验。总结一下:1:struct Foo{ int a; union U{ }u; };int main(){ printf("%d\n",sizeof(F...原创 2014-04-08 17:21:31 · 173 阅读 · 0 评论 -
头插法使得链表逆序
代码也很简单,空间复杂度为O(1)。算法描述,pre记录前一个node,current记录当前node,temp存储current的下一个node。这样就形成了一个循环,temp存储current的下一个node之后又current的next指向pre节点;这样就逆序了一个节点。然后pre和current整体后移一位,继续逆序第二个节点。以此类推。typedef stru...原创 2014-04-10 17:24:32 · 424 阅读 · 0 评论 -
大整数加法
#include "StdAfx.h"#include "subStr.h"#include<iostream>using namespace std;#define MAX_LENTH 201void add(int len,int *bigNumA,int *bigNumB){//以下为执行加法累加,逐位相加;tag记录进位 int i...原创 2014-03-10 15:02:11 · 114 阅读 · 0 评论 -
C和Java基本数据类型的不同
1、与C语言不同,JAVA里没有无符号(unsigned)整型。JAVA的8种基本类型(boolean,byte,short,char,int,long,float,double)都是有符号的。2、与C语言不同,JAVA里的char类型,占2个字节,专为存放Unicode字符所设计;3、与C语言不同,JAVA里的boolean只能赋值为true或false,不能直接赋值0或1;...原创 2014-03-10 08:36:44 · 1503 阅读 · 0 评论 -
接收字符串的两张方法对比
char s[100];gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到回车为止 ...原创 2014-02-26 11:47:13 · 133 阅读 · 0 评论 -
c语言中有byte这种类型吗?
标准C没有这个类型,byte表示一个字节,对应C的unsigned char,你可以自己按下面的样子定义一个即可:typedef unsigned char byte; 格式输出:%o 八进制%x 十六进制接下来写一个利用byte计算二进制数中有多少个1的例子!!!(转换为16进制接收。)#include<iostream>us...原创 2014-02-27 16:14:50 · 17093 阅读 · 1 评论 -
位操作
在不发生截断或者溢出的情况下: 左移(<<)一位相当于乘以2 右移(>>)一位相当于除以2...原创 2014-02-27 17:35:59 · 65 阅读 · 0 评论 -
字符串全排列(permutation)(转)
问题:给定字符串S,生成该字符串的全排列。方法1:依次从字符串中取出一个字符作为最终排列的第一个字符,对剩余字符组成的字符串生成全排列,最终结果为取出的字符和剩余子串全排列的组合。#include <iostream>#include <string>using namespace std;...原创 2014-03-04 14:55:34 · 178 阅读 · 0 评论 -
While循环
int a=5,count=0; while(--a) count++; printf("a is%d count is%d\n",a,count); 结果: a is 0 count is 4 int a=5,count=0; while(a--) count++; printf("a is%d coun...原创 2014-03-04 17:09:50 · 178 阅读 · 0 评论 -
strcat的实现原理
char str[10]; char *p=str; char* st="tab"; while(*p++ = *st++){ //这里要是*str++ *st++就不对了。因为str是不能移动的。 } printf("%s\n",str);原创 2014-03-04 17:54:53 · 987 阅读 · 0 评论 -
C语言中各个数据类型的长度
C语言的基本数据类型有以下几个:int 整型char 字符型float 单精度浮点型double 双精度浮点型另外,在基本数据类型基础上附加一些限定词, 得到扩充的数据类型。short,long可以应用到整型, unsigned可以应用到整型和字符型:short int(或short) 短整型long int(或long) 长整型unsigned int 无符号整型unsigned short ...原创 2014-03-05 09:35:20 · 1141 阅读 · 0 评论 -
printf函数的一个问题
看看如下代码,猜猜会打印出什么? int i=1; printf("%d %d\n",i++,i++); 输出结果竟然是: 2 1是不是感到很奇怪?原因:printf是最右侧的元素先入栈,所以右边的i++中的i先入站占4个字节此时入栈元素为0x00000001,接下来左边的这个i++中的i入栈,此时i已经变...原创 2014-03-05 10:21:10 · 134 阅读 · 0 评论 -
指针数组探究
1.首先定义一个指针数组,存储int型的指针元素。 int * parray[3]; 赋值给该数组: int a=1,b=3,c=5; parray[0]=&a; ...原创 2014-03-06 11:10:32 · 87 阅读 · 0 评论 -
C语言数组初始化全部为0
例如: int a[15] = {0};第一种,编译器会把第一个初始化值赋给数组的第一个元素,然后用0赋给其余的元素。如果没有给出初始值,编译器不会去做初始化工作。这样简洁的方式让代码更加高效。 还有一种,就是memcpy函数的使用。例如上面的数组,可以memcpy(a,0,15);不过个人在嵌入式的环境下使用,个人建议用第一种,因为感觉使用函数会大费周章,而且这个函数用得不...原创 2014-03-07 17:13:35 · 11703 阅读 · 0 评论 -
赋值操作符的思考
我要说的是一个小问题,感觉写在博客里面比较好。以后看到了可以回忆警示一下。 问题是这样的:在Java中数组之间能不能通过数组名直接赋值,为什么? 在C中数组之间能不能通过数组名直接赋值,为什么?我们先来分析C语言中的情况: char arr[3]={'a','b','c'}; ch...原创 2014-04-18 11:03:07 · 109 阅读 · 0 评论