
C 基础
戎·码一生
自信来自实力,改变来自挑战。做一只生活小强。
展开
-
判断一个字符是否是数字、还是大小写字母
int main(){printf("please input one character:\n"); input=getchar(); while(input==10) { printf("please input again:\n"); input=getcha原创 2014-09-06 10:55:11 · 7486 阅读 · 0 评论 -
Linux下几个经典面试的笔试题
1.列出当前目录的子目录清单2.将文件系统下的东西安全的移到另一文件系统下3.将某文件的每行的第三到第七个字符取出来排序4.汇总文件的某一列,并求平均值。5.简述进程间通信方式:信号灯、共享内存及消息队列原创 2014-09-19 20:49:53 · 1035 阅读 · 0 评论 -
c语言实现动态心型代码
//c语言动态心型的实现代码,帮助熟悉指针和程序:#include #include void show( int m){ // char a[3][5];char *a=(char *)malloc((4*m/2+m)*(4*m+m)); int i,j,k; for(k=0;k<(4*m/2+m);k++)for(i=0;i<(4*m+m原创 2013-10-31 13:16:40 · 119842 阅读 · 55 评论 -
c语言中引用和传值的区别
//交换两个数值的c语言代码://关键是注意程序的效率问题,还有引用和传值的区别: #include void swap(int *a,int *b); //void swap(int &a, int &b);第二种方法;int main(){ int number1,number2; printf("please input two number you want原创 2013-10-31 13:13:04 · 1661 阅读 · 1 评论 -
三个数求最大值的不同解法
自学c语言小程序,练练手:方法一:#include int compare(int a,int b, int c);int main(){ int one,two,three,Max; printf("please input three number you want to compare:\n"); scanf("%d%d%d",&one,&two,&thre原创 2013-10-31 13:10:15 · 1453 阅读 · 0 评论 -
c语言最小公倍数与最大公约数的求法集锦
c语言最基本的一些小程序源代码:方法一:#include int main(){ int data1,data2,i; printf("please input two datas:\n"); scanf("%d%d",&data1,&data2); if(data1>data2)// 最小公倍数; { for(i=data1;i<=data1*data原创 2013-10-31 13:07:33 · 1819 阅读 · 0 评论 -
指针与多维数组(2)
因为指针与数组的结合产生了很多有趣的东西,所以接着来看看多维数组与指针之间的关系,看看指针数组和数组指针!!指针数组:int * as[10];数组指针:int (*as)[10];[]的作用:1.定义变量时有[],代表定义的是数组;2.参数传递时有[],代表传递的是指针;3.地址的右边时[],代表的是下标访问;#include int main(){ int原创 2016-04-09 19:37:03 · 695 阅读 · 0 评论 -
静态变量 static
静态变量是一个非常重要的知识点,无论笔试面试,都是一个高频的考点!确实也十分重要,这里简单的总结一下,它C与C++中的作用!!以备后用!变量的生命周期与作用域静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束。(原创 2016-04-07 11:30:41 · 3565 阅读 · 0 评论 -
数据结构-【链表】单向链表的逆置和双向循环链表
单向链表的逆置1、为什么不能用auto变量的地址去初始化static型指针?因为Static是在编译时进行初始化的,而Auto是在运行时初始化的,在编译时,Auto变量还不存在呢,当然也就没有地址,初始化就不能成功了.#include <iostream>using namespace std;typedef struct student{ int number; struct student *pNext;} Stu;原创 2014-09-10 20:26:47 · 3305 阅读 · 0 评论 -
浅谈a++ 与a--
曾几何时,刚接触到C、C++的时候,总是会纠结一些小问题,然后就去问老师,这是怎么回事,,其中就有,a++与a--这样的题。。。老师总是告诉我们a++,是先计算后算++;++a就是先算a++再计算;其实:++/--的运行原理,并不是先加后加的问题;不管是num++还是++num,其实都是先运算的++,只是返回的值不一样;下面用一段程序来解释它的真谛:#include usin原创 2016-04-09 15:50:26 · 3111 阅读 · 1 评论 -
C++中volatile关键字
volatile关键字volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:vo转载 2016-04-10 17:23:26 · 467 阅读 · 0 评论 -
函数指针
函数名与数组名的区别: 数组a 与&a值一样,但是类型不一样;但是函数名和函数取地址是一样的: 数组名的取地址和数组名结果一样,但是类型不一样; 变量在定义的时候就分配空间; 函数名字+()就叫函数的调用;但是在C++中,成员函数用指针函数调用的时候,必须要加&;普通函数函数指针的调用不必加&;void (*p)(); //函数指针变量;void f()原创 2016-04-09 20:14:33 · 564 阅读 · 0 评论 -
c语言将字符串写入文件
代码如下:FILE *fp; char ch; if((fp=fopen("file.txt","a+"))==NULL) { printf("You can't open the file.txt!\n"); exit(1); }原创 2014-09-08 11:00:05 · 18097 阅读 · 5 评论 -
c语言中有符号和无符号数据类型的区别
最大是0---65535,8位2进制数,有符号也是8位2进制,只不过第一位用来表示符号了,所以有符号的范围是-32768---32767.原创 2014-10-03 20:02:22 · 19877 阅读 · 0 评论 -
常量指针与指针常量
在刚开始学习的时候总是容易把常量指针和指针常量弄混,幸好就是里面的那个变那个不能变能分清,也许是用来几次的缘故,可是名字记不住,这次写下来,希望以后不会再网!其实关键就是要弄清const在*的左边还是右边,左边值不能变,常量指针;在右边指针常量,地址不能改变;两边都有就是常量指针常量,此生此世,水滴石穿,沧海桑田,海枯石烂,山无棱,地无角,天地合,还是不能改变!#include原创 2016-04-06 21:25:39 · 530 阅读 · 0 评论 -
C语言中的位运算
位运算左移、右移 > 左移右补0,右移左补0;取反 ~异或 ^ ----相同为0,不同为1位与 & ---------同1为1,同0为0,不同为0,(用于取位操作)位或 || -------------同0,为0,,有1则1(置某位为1)所有的位操作都是基于无符号类型的数据;[工作和笔试中没有负数,不需要按照补码或者是反码来求]注意:位操原创 2016-04-06 21:48:48 · 649 阅读 · 0 评论 -
结构体空间的大小计算
#pragma 设置编译器的属性;pack(1) 对齐方式的属性;按照个字节1对齐;#pragma pack(1)里面的数字是1,2, 4,8,16 其他的就是默认的方式8;pack(2)如果比结构体中最大的类型还大。如#pragma pack(16)那么忽略最大类型,按默认8的进行分配空间;下面再举个例子,交换一下上面的MyStruct的成员变量的位置,使它变成下面的情原创 2016-04-06 22:07:18 · 991 阅读 · 0 评论 -
union与enum
共同体(联合)union定义--在内存中的存储形态特点覆盖技术系统采用覆盖技术,实现变量的内存共享。所以在某一时刻,存放的和起作用的是最后一次存放的成员值地址共享--联合所有的变量都共享一个内存,它们的首地址是一样的;三不:--不能初始化共同体,所有变量共享一块空间,不能全部初始化;--不能作为函数的参数,不知道传谁--不能作为函数的返回值 不知道返回哪个原创 2016-04-07 09:58:55 · 935 阅读 · 0 评论 -
大端小端
测试本机是打断还是小端;以前总听说大端小端,一直没太理解,其实只要动动手一切就差不多了!大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中;#include unio原创 2016-04-07 10:20:26 · 827 阅读 · 0 评论 -
变量的内存分配与printf()函数
首先来看下面一个简单的代码,程序和生活一眼个,其实里面很多都不是我们想象的那样执行的,的知道它里面的工作方式:#include int main(){ char c1; char c2; printf("%p\n",&c1); //0012ff44 printf("%p\n",&c2); //0012ff40 return 0;}从上面的例子我们可以看出,输出的地址为什么,原创 2016-04-09 15:11:41 · 1554 阅读 · 0 评论 -
C语言赋值类型的转换
C语言在赋值的时候,可能会遇到类型不一致的情况,在VC6.0的编译器里,如果类型不一致,一般会给个警告,然后做隐式转换,将=右边的类型转换为=号左边的类型,然后再赋值,这样就会有相应的数据精度的丢失与不一致:原则如下:1.在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大小和 int 一样原创 2016-04-09 16:11:27 · 4507 阅读 · 1 评论 -
指针与数组(1)
说到C语言,指针绝对是c语言的压轴出场,是c语言的重头戏,也是C语言的精华所在,由于指针的存在,我们可以直接对内存空间操作,拿到某个变量的指针(得到它的地址),那么它那块空间就属于我的了,想干什么就干什么!!!!就好像c++里由于虚函数的存在,出来一个虚表,那么只要拿到这个虚表的指针(虚表的地址就是该对象的首地址),那么对于父类和子类的无论私有还是保护的成员函数,我们都可以拿来用,因为我们已经原创 2016-04-09 18:34:19 · 649 阅读 · 0 评论