c语言基础
文章平均质量分 61
qikaibinglan
c/c 程序员
展开
-
头文件中" " 与 的区别
<br />不对,C语言编译器会用一些目录存放公共头文件,如果<>则只在这些目录下找头文件,如果用""先在当前目录下找,如果找不到则在这些目录下找。不可能搜索所有目录,这样效率太低。一般来说,自己定义的头文件应该用"",因为这些文件放在工程目录(也就是编译器的当前目录)下,而不是放在公共头文件目录下,如果用<>则找不到头文件。而系统提供的头文件,比如库函数的头文件,可以用<>不过保险的话,用""肯定可以找到所有头文件,包括系统库函数头文件和自己定义的头文件原创 2011-02-25 13:17:00 · 2692 阅读 · 0 评论 -
C语言指针详述(3)
<br />第七章 指针和结构类型的关系 <br /><br /><br />可以声明一个指向结构类型对象的指针。 <br />例十一: <br />struct MyStruct <br />{ <br /> int a; <br /> int b; <br /> int c; <br />} <br />MyStruct ss={20,30,40}; //声明了结构对象ss,并把ss的三个成员初始 <br />化为20,30和40。 <br />MyStruct*ptr=&ss; //声原创 2011-02-23 16:24:00 · 910 阅读 · 0 评论 -
C语言中什么叫做左值?右值?
左值就是在赋值中可以放在赋值操作符两边的值,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值,一切变量都是左值,但const量是例外。 *p是一个左值,和变量一样,只要在*p的右边加上赋值运算符,就可改变*p的值。如果p是一个指向常量的指针,*p就是一个不能修改的左值,即它不能被放到赋值运算符的左边。i和 -i 都是表达式 但一个是左值(i),一个是右值(-i)。 ++,--这两种操作符要求作用于左值,所以i++合法,(-i)++不合法。不严谨的讲,原创 2011-02-23 20:42:00 · 15846 阅读 · 2 评论 -
堆和栈的区别 (转贴)
<br />非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!<br />堆和栈的区别<br />一、预备知识—程序的内存分配<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。<br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。<br />3原创 2011-02-22 18:55:00 · 624 阅读 · 0 评论 -
C指针(初级篇1)
<br /> 为初学者服务--这是我的帖子的宗旨。我也是个初学者(强调了无数遍了),我以<br /><br />我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文 <br />没学好,所以竭尽全力也未必能达到这个目的,尽力而为吧。 <br />指针是c和c++中的难点和重点。我只精通dos下的basic,c语言的其它各种特 <br />性,在basic中都有类似的东西,只有指针,是baisc所不具备的。<br /><br />指针是c的灵魂。<br /><br /><br /> 我不想原创 2011-02-23 16:01:00 · 671 阅读 · 0 评论 -
如何理解c和c ++的复杂类型声明
<br />曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 <br /><br /> 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 <br /><br /> 需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保原创 2011-02-23 16:06:00 · 517 阅读 · 0 评论 -
c语言字符串函数详解
<br />void *memset(void *dest, int c, size_t count);<br />将dest前面count个字符置为字符c.<br /><br />返回dest的值.<br /><br /><br />void *memmove(void *dest, const void *src, size_t count);<br /><br />从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理.<br /><br />返回dest的值.<原创 2011-02-23 20:56:00 · 924 阅读 · 0 评论 -
C语言优先级
<br />共44个运算符 <br /><br />醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员 <br />坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度 <br />酸-算术,5个: * / % + -减 <br />味-位移,2个: << >> <br />灌-关系,6个: < <= > >= == 等于 != 不等于 <br />味-位逻,3个: & 按位与 ^ 按位异或 | 按位或 <br />落-逻辑,2个: && 逻辑与 |原创 2011-02-23 21:35:00 · 544 阅读 · 0 评论 -
C/C++程序员应聘常见面试题深入剖析
<br />1.引言 <br /><br /> 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。<br /><br /> 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程 度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到st原创 2011-02-23 16:03:00 · 675 阅读 · 0 评论 -
C语言指针详述(2):数组与指针
<br />第六章 数组和指针的关系<br /><br /> 1.指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数<br /><br /><br />组。<br /><br /><br />int * a[10];它里边放了10个int * 型变量,由于它是一个数组,已经在栈区分配了1<br /><br /><br />0个(int * )的空<br /><br /><br />间,也就是32位机上是40个byte,每个空间都可以存放一个int型变量的地址,这个<br /><br />原创 2011-02-23 16:11:00 · 774 阅读 · 0 评论 -
C语言程序设计 ASCII美国标准信息交换标准码 简介
<br />美国标准信息交换标准码<br />( American Standard Code for Information Interchange, ASCII )<br /><br /> 在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机比较傻,只有0和1两位数的二进制比较适合于它使用),同样的,象a、b、c、d 这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当原创 2011-02-24 10:16:00 · 1208 阅读 · 0 评论 -
C语言指针详述(1)
<br />第一章 指针的概念 <br /><br />指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 <br />先声明几个指针放着做例子: <br /><br /><br />指针的类型 <br /><br />指针所指向的类型 <br /><br />指针的值 <br /><br />指针本身所占据的内存区<br /><原创 2011-02-23 16:07:00 · 536 阅读 · 0 评论 -
关于各种类型的sizeof
关键字:指针的sizeof总为4.下面一段代码:char str[ ]= ”Hello”; char *p=str; int n=10; sizeof(str)=( 6 ) sizeof(p)=( 4 ) sizeof(n)=( 4 ) void func(char str[100]) { } sizeof(str)=( 4 ) 怎么算出来的~??+================================================+解释如下+==========================原创 2011-02-22 18:07:00 · 746 阅读 · 0 评论 -
C语言的常用类型转换函数(atoi,atol,strtod,strtol,strtoul)
<br />atof(将字符串转换成浮点型数)<br />相关函数<br /> atoi,atol,strtod,strtol,strtoul<br />表头文件<br /> #include <stdlib.h><br />定义函数<br /> double atof(const char *nptr);<br />函数说明<br /> atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转原创 2011-02-27 14:33:00 · 2623 阅读 · 0 评论 -
big Endian Little Endian
<br />大端(Big Endian)与小端(Little Endian)详解 <br /><br /><br />来源: ChinaUnix博客 日期: 2008.01.25 10:24 (共有0条评论) 我要评论 <br /><br /><br />【大端(Big Endian)与小端(Little Endian)简介】<br />Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 <br /> 对于数据中跨越多个字节的对象,原创 2011-03-01 06:59:00 · 2595 阅读 · 0 评论 -
c运算符优先级
1, 优先级一级,结合方向自左至右 () 圆括号 【】 下标运算符 -> 指向运算符 . 结构体成员运算符2,优先级二级,结合方向自右至左 ! 逻辑非运算符 ~ 按位取反运算符 ++ 自增运算符 -- 自减运算符 - 负号运算符 (类型) 类型转换运算符 * 指针运算符 & 取地址运算符 sizeof 长度运算符3,优先级原创 2011-03-04 19:45:00 · 2543 阅读 · 0 评论 -
printf 常用格式输出符
%d 按照十进制整形数据实际长度输出%md m为制定的输出字段的宽度,如果数据的位数小于m,则左端补以空格原创 2011-03-04 20:24:00 · 3884 阅读 · 0 评论 -
C语言中不同数据类型间混合运算的转换规则
<br /><br />不同数据类型间混合运算的转换规则<br />不同数据类型的数据进行预算时,必须先转换成同一数据类型,然后才能进行运算。转换的规则如下图所示:<br />图中横向向左的箭头表示必定的转换,如字符数据必须先转换成整数,short型转换为int型,float型数据在运算时一律先转换成double型,以提高运算精度(即使是两个float型数据进行相加,也先都化成double型,然后再相加)。<br /><br /> 纵向的箭头表示当运算对象为不同数据类型时转换的方向。注意箭头只是原创 2011-03-04 14:38:00 · 18371 阅读 · 0 评论 -
运算符、表达式、语句
<br />我们已经学会如何用变量来表达数据,比如我们现在要写一个《工资管理系统》……我看到很多学员本来昏昏欲睡的眼睛刷地放出了光芒:“老师,我们现在就能写《工资管理系统》系统了吗?”<br /><br />回答:不能,我们刚刚学了点基础而已。不过,至少我们可以猜想,要写一个工资管理系统,总得懂得如何表达“工资”这个信息吧?还有像职工的年纪,职工人数等等,都得用C/C++语言来表达,这些我们现在都会啊!<br /><br />double gongZi; //工资<br /><br />int ni原创 2011-03-04 15:38:00 · 3205 阅读 · 0 评论 -
typedef struct与struct的区别
typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2. typedef & 结构的问题 当用下面的代码定义一个结构时,编译器报了一个错原创 2011-02-16 21:00:00 · 555 阅读 · 0 评论 -
sizeof sturct 字节对齐
例如:typedef struct S1{ int a; int b; int c; int d; char e; float f; short g; long h;};void main(){ int b,c; int e; struct S1 test; int a=(b=4,c=6,e=8);printf("sizeof test1 is %d/n",sizeof(test)); //结果32}原理:1,字节数计算从0开始 2,当前的位置必须可以同当前类型字节整除原创 2011-02-22 18:42:00 · 878 阅读 · 1 评论 -
int a=(b=4,c=6,e=8);
<br />void main()<br />{<br /> int b,c; <br /> int a=(b=4,c=6,e=8);<br /> printf("a is %d/n",a); //得到结果为8即为最后一个变量的值<br /> }原创 2011-02-22 19:02:00 · 1149 阅读 · 0 评论 -
C语言中强制数据类型转换的总结
<br />● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。<br />● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。<br />double ←── float 高<br />↑<br />long<br原创 2011-02-23 21:36:00 · 708 阅读 · 0 评论 -
从字符串中查找字符出现次数
<br />今天在一场“特殊的讨论”中引入了一个问题,如何在C#求出字符串中某字符的出现次数,比如求“ADSFGEHERGASDF”中“A”出现的次数。首先想到的方法当然是从头遍历字符串并统计:<br /><br />c1 = 0;<br />for (int i = 0; i < str.Length; i++)<br />{<br /> if (str[i] == 'A')<br /> {<br /> c1++;<br /> }<br />}原创 2011-02-24 13:42:00 · 786 阅读 · 0 评论