当前位置:文档之家› C语言笔记

C语言笔记

C语言笔记
C语言笔记

第二单元

1.ASCII 0~48 A~65 a~97 ESC~27

2.变量不能连续赋初值,赋值语句允许连续赋值

3.k=a+++b+++c等价于k=(a++)+(b++)+c

4.空语句是什么意思?

5.If((x=y+5;)>0) 非法因为x=y+5;是语句,不能出现在表达式中;

If((x=y+5)>0) 合法

6.C语言必须有输出

7.getchar和putchar的使用P37,暂时看不懂

8.getchar()是一个无参函数

9.scanf输入需要变量地址,无精度控制

10.%是求余运算

11.字符常量用单引号,字符串用双引号

12.getchar和putchar只能输入输出一个字符

13.琐碎知识较多,多看课本

14.

strcpy为字符串复制函数赋值

strcat为字符串连接函数

Strcmp用来比较两个字符串是否相同

Strlen是用来求字符串的长度

Sizeof是求占用内存空间字节数

例如:if(strcmp(s1,s2)==0) ST;如果字符串s1和s2相同,则执行ST

15.动态存储变量包括auto和register变量,静态存储变量包括extern和static变量。

第三单元

1.关系运算符真和假分别用1和0表示

2.&& || !与或非

3.If语句三种形式

1.if (条件) 结果;

2.if(条件)

结果1;

else

结果2;

3.当条件有多个分支的时候

if(条件1)

结果1;

else if(条件2)

结果2;

else if(条件3)

结果3;

.......

else if(条件m)

结果m;

算术运算符

关系运算符

&&和||

赋值运算符

else

结果n;

4.if后面可以使表达式,赋值表达式,甚至一个变量。

5.If 条件后面的结果不止一条使用{ },但是}后面不能有“;”。

如:

If(a>b)

{a++;

B++;}

6.当有多个if和else时,规定else总是与前面最靠近的if配对

7.三目运算符:

表达式1?表达式2:表达式3

例如:

If(a>b) max=a;

else max=b;

可以写成:

max=a>b?a:b;

关系运算符结合方式是自右向左

如:a>b?a:c>d?c:d应该理解为a>b?a:(c>d?c:d)8.switch()语句

switch(表达式)

{ case 表达式1:结果1;

case 表达式2:结果2;

case 表达式3:结果3;

。。。。。。

case 表达式n:结果n;

default:结果n+1;

}

如果所有表达式都不符合,则执行default,default是最后执行的。

9.switch不能直接跳出,需要break;来跳出结果。

10.P65(5)P66(3)P66(6)看不懂

第四单元

1.while语句

一般形式:while(条件)结果;多条结果使用{ },最后无“;”

当条件为真时,执行结果。

2.do--while语句

一般形式:do 语句while(条件);

先执行语句,然后通过条件判断是否执行下去,可以参考P70流程图,多条结果使用{ },最后无“;”while后面有“;”

3.for语句

一般形式:for(循环变量赋初值;循环条件;循环变量增量)循环语句例如:for(i=1;i<=100;i++)sum=sum+i

相当于while语句:

表达式1;

while(表达式2)

{语句

表达式3;}

4.可以看看例4.9的结婚问题

5.break语句

break对if-else不起作用

多层循环中break只能向外跳一层

6.continue语句

7.P83(1)

第五单元1.P104例题

第七单元

指针1.把字符串首地址赋给字符类型的指针变量#include 上例等价于

i=1;

while(i<=100) {

sum=sum+i;

i++;

}

#include void main()

{

char *p;

void main() { char *p="hello"; printf("%c\n",*p);

}

输出结果:h

2.指针变量加减一个整数运算只能对指向数组的指针变量进行。

3.

4.两个指针变量相减,只有指向同一数组才有意义,无加法,

这里不是把整个字符串装入指针变量,而是把存放该字符串的存储区的首地址装入指针变量。

#include int main() { int a[6]={5,7,8,2,2,4},*p=a,i; for(i=0;i<6;i++) printf("%2d",*(p++)); return 0; }

输出结果:5 7 8 2 2 4

#include int main() { int a[6]={5,7,8,2,2,4},*p=a,i; for(i=0;i++;i<6) printf("%2d",*(p++)); return 0; }

为什么顺序一变就变成了一大堆的 乱码了呢?

第八单元

结构体共用体枚举1.结构体定义

struct 结构名

{

成员1;

成员2;

。。。。。

};

2.表示结构变量名的一般形式:

结构变量名.成员名

例如:

https://www.doczj.com/doc/5a5017889.html,=”zhangxin”

printf(%s,https://www.doczj.com/doc/5a5017889.html,);

3.结构变量的初始化

Struct 结构体类型名结构变量={初值表};

第九单元

预编译处理一.无参宏定义

一般形式:#define 标识符字符串

1.宏的关键是换

2.字符串双引号内的内容永远不进行替换

3.一个#define定义的宏,可以用#undef中止宏定义的作用域

4.在宏定义表达式中适当使用圆括号

二.有参宏定义

一般形式:#define 宏名(参数表)字符串

如: #define S(a,b) a*b

1.在宏定义中形参最好用()括起来

#include

#define f(x) x*x*x

main()

{ int a=3,s,t ; s=f(a+1); t=f((a+1)); printf("%d,%d\n",s,t); }

运行结果10,64

2.宏替换占用了编译时间,函数调用需要占用程序运行空间p259

3.宏的使用耗费了存储空间,函数耗费了时间p266(两个哪一个正确)

第一章

1.C语言的标识符可分为关键字、用户标识符、和预定义标识符三类。

2.标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。

3.常量包括整形常量、实型常量、字符常量、字符串常量。

整形常量又可分为短整型常量和长整型常量。

4.整型常量只用数字表示不包含小数点。

实型常量必须用带小数点的数表示。

5.八进制数必须用0开头,十六进制数用0和x开头。

十六进制数中的字母abcdef分别表示10、11、12、13、14、15。

6.在C程序中只有十进制数有负数,八进制和十六进制都没有负数。

7.计算机中,内存储器的最小存储单位是位(bit),8个二进制位组成一个字节(byte)。

8.用e或E表示的实型常量规定:(1)e或E必须要有数字之前。

(2)e或E后面的指数必须为整数。

(3)e或E的前后以及数字之间不能有空格。

9.在一般的计算机系统中,位float类型的变量分配4个字节的存储单元,为double类型的

变量分配8个字节的存储单元。

10.只有单目运算符+和-的结合性是从右到左,其余的运算符的结合性都是从左到右。

11.强制类型转换表达式形式(类型名)(表达式)。

12.赋值运算符=号的优先级只高于逗号运算符。

第二章

1.输出数据都隐含右对齐,如果想左对齐,可以在格式控制中的%号和宽度之间加一个-号实现左对齐。

2.通常正数输出都不会带+号,要想每一个数都都带正负号,可以在%和格式字符之间加一个+来实现。

3.各种输出格式总结(1)int类型时,宽度太大时,左边空格补齐,宽度不够时自动突破限制。

(2)double类型时如果对小数点后数字没有要求就是6位,当满足6位时,宽度太大,左边空格补齐。宽度不够时自动突破限制,并且保留6小数点后数字。

(3)当要求输出e类型(指数形式)也是自动保留6位小数点后数字,不足用0右面补齐。

(4)对于int类型,若输出格式是0n1或.n2格式,则如果指定的宽度超过输出数据的实际宽度,则右对齐左边补0。

(5)对于字符串,格式n1指定输出宽度,若n1小于字符串的实际宽度,则自动突破,输出整个字符串;若n1大于实际宽度则右对齐,左面空格补齐。若用.n2的格式输出若n2小于实际宽度则输出字符串的前n2个字符。

4.printf输出注意事项:(1)要输出%号时,可以在格式控制中用%%表示,将输出%号。

(2)尽量不要改变输出变量的值。例如int k=8;printf

("%d,%d\n",k,k++);输出结果不是8,9而是9,9。因为在调用printf时,其参数是从左到右进行处理的,先将进行++k运算。

5.scanf注意事项:(1)输入short类型数据,格式控制要求用%hd。要输入double类型数据要用%lf或%le。

(2)不能指定小数位的宽度。

(3)多个数据输入时不同数据间要有空格或回车或制表符。

(4)可以在%和格式字符之间加入*,作用是跳过对应的输入数据。

第三章

1.非0为真,0为假。

2.<、<=、>、>=的优先级别相同,==、!=的优先级别相同,但是前四种优先级别高于后两种。

3.优先级别比较:算术运算符>关系运算符>赋值运算符。

4.三种逻辑运算符:&&与||或!非。

5.逻辑运算符的优先级别比较: !>&&>||。

6.总体比较优先级别比较:!>算术运算符>关系运算符>&&>||>赋值运算符。

7.(表达式1?表达式2:表达式3)这是c语言提供的唯一一个三目运算符,要求三个运算对象。条件运算符优先级高于赋值运算符,但低于关系运算符和算术运算符。当表达式1正确时,整个表达式的值就是表达式2的值,当表达式错误时,整个表达式的值就是表达式3的值。

第四章

1.不要把if和while的功能混淆,if可以一循环一次,当然循环一次就不能叫做循环了,也可以说if不可以循环,while可以循环。

2.break的使用必须在循环体内和switch中使用,不然会出现illeage break。

3.continue的作用是跳过循环体中余下尚未执行的语句。

4.注意for(i=1;i<5;i++)中的i是从1开始执行的。并不是从3开始的!

5.do-while先做一次循环再看while。即先执行do再执行while。

6.++k和k++的区别是++k先自增再参与运算,k++是先参与运算再自增。

7.while 当()里面的语句错误时结束;6和7的总结例题:int x=2;

while(x--);

printf("%d",x);

输出的是-1而不是0,因为这是一个空循环,注意while后面的冒号,这个题体现出来了x--

先参与运算再自减。

第五章

1.字符变量是把一个字符用单引号括起来。

2.字符常量只能包含一个字符。

3.字符串是用双引字号括起来。

4.字符常量在内存中占一个字节。

5.在一对单引号内可以用反斜线后跟一个八进制数来表示一个ASCII字符,‘\101'代表‘A’,也可以用十六进制数表示,但必须由x开头,如:'\x41'表示字符常量‘A’。

6.在c语言中,系统在每个字符的最后自动加一个字符‘\0’作为字符串的结束标志。

7.puchar函数用于输出字符,调用形式是.puchar(ch)

getchar同于输入字符,调用形式ch=gechar()这一对括号不可少。

8.isalha(c)判断c中的字符是否为字母,tolower(C)将c中的大写字母转化成小写字母。

9.c语言中的简单数据类型有整型,实型,字符型。

10.调用c语言提供的对字符进行处理的函数应包含ctype.h文件。

第六章

1.例子:y=x的

2.5次方+1.3可以通过y=pow(x,2.5)+1.3来实现。

2.c语言规定不能在函数的内部定义函数。

第七章

1.short int占用两个字节

int float 占用四个字节

double 占用八个字节

char 占用一个字节

指针变量占用四个字节

2.定义指针变量补课省略*

3.当*p出现在赋值号左边时,代表的是指针所指的存储单元,在右边时,是指针所指的存储单元中的内容。

4.++和*的优先级别相同,但是按自右到左方向结合。

第八章

1.每个数组包含一组具有同意类型的变量,这些变量在内存中占有连续的存储单元。

2.当数组中每个元素只带有一个下标时,称这样的数组为一维数组。

3.c语言规定每个数组的第一个元素下标是0.

4.建立以下概念:1.一个数组其实就是一个变量名,代表内存中的一个存储单元。

2.在c语言中,一个数组不能整体引用。

5.给数组赋初值int a【8】={0,1,2,2,3,4}

数值之间用,来间隔。

6.所赋值少于元素个素时后面的自动补0.当多了时系统会出现错误。

7.不能给数组重新赋新地址值,一旦定义永远指向该数组的首地址。

8.可以通过for{k=0;k<10;k++} scanf("%d",a+k);来读入数据放入数组中。

9.语句p=&a[0];和p=a;都是合法的,都是使指针变量p指向a数组的首地址。

10p++使指针p依次指向a数组中的每个元素,for(p=a,k=0;k<10;k++)p++;

11.a+0等于&a【0】a+1=&a【a1】*(a+1)=a【1】

12.当指针变量p指向a数组的起始地址时,可以通过以下语句逐个输出a数组元素中的值。for(p=a,k=0;k<0;k++)printf("%4d",*(p+k));

《C语言程序设计》第三章 C语言基础 课堂笔记

页眉内容 《C语言程序设计》第三章C语言基础课堂笔记 §3.1 基本字符集、关键字和标识符 一.基本字符集 字符是C的基本元素,C语言允许使用的基本字符集: 1.26个大写字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2.26个小写子母a b c d e f g h I j k l m n o p q r s t u v w x y z 3.10个阿拉伯数字0 1 2 3 4 5 6 7 8 9 4.其他字符!" # % & ' ( ) * + , - . / : < = > ? [ \ ] ^ _ { | } ~ 5.空格字符以及制表符合换行符等控制字符 二.关键字(P375,附录II) C中具有固定意义的字符串。 (1) C中的关键字共32个,必须用小写字母 (2) 关键字不可用于变量名、函数名等。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while 三.标识符 标识符用于命名变量、类型、函数和其他各种用户定义的对象,是由字母、下划线和数字三种字符组成。 (1) 第一个字符必须为字母或下划线 (2) C对标识符的长度规定为任意,Turbo C区分32 个字符 (3) C区分大小写 (4) 不允许关键字作为标识符 §3.2 C数据类型

c语言笔记

慕课网C语言第四章笔记 1 多重循环语句的使用: For循环中的变量步进值 2 思维模式的注意一些事项 函数 C语言提供了大量的库函数(右侧资料下载中有),比如stdio.h提供输出函数,但是还是满足不了我们开发中的一些逻辑,所以这个时候需要自己定义函数,自定义函数的一般形式:

注意: 1、[]包含的内容可以省略,数据类型说明省略,默认是int类型函数;参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数; 2、函数名称遵循标识符命名规范; 3、自定义函数尽量放在main函数之前,如果要放在main函数后面的话,需要在main函数之前先声明自定义函数,声明格式为:[数据类型说明] 函数名称([参数]); 那么函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。 函数的返回值要注意以下几点: 1. 函数的值只能通过return语句返回主调函数。return语句的一般形式为: return 表达式或者为:return (表达式); 2. 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数返回类型为准,自动进行类型转换。 3. 没有返回值的函数,返回类型为void。如果小刚算了一会没有返回结果的话,那么用代码表示就是: 注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return; 错误!

错误! 函数的调用的一些问题 #include /* Jone算出结果应该怎么写函数? */ int joneResult(int x, int y, int z) { int sum = x+y+z; return sum/3; //这里是不是应该将sum返回呢? } /* Jack没有算出结果只说了一句话是不是应该用无返回值函数? */ void jackResult(int x, int y, int z) { printf("我算不出来\n"); return 0; } int main() { int a, b, c; a = 10; b = 20; c = 30; //Jone的返回值类型是什么? int jR = joneResult(a, b, c);

C语言笔记_me

预编译处理: 1.宏定义 形式:#define 标识符字符串 说明: 宏名一般用大写。 宏定义不作语法检查,只有在编译被宏展开后的源程序时才会报错。 宏定义不是C语句,不在行末加分号。 宏名有效范围为定义到本源文件结束。 可以用#undef命令终止定义的作用域。 在宏定义时,可以引用已定义的宏名 带参数的宏定义 形式:#define 宏名(参数表)字符串 2.文件包含处理 #include “文件1” 就是交文件1的全部内容复制插入到# include位置,作为一个源文件进行编译。 3.条件编译 条件编译:指不对整个程序都编译,而是编译满足条件的那部分。有以下几种形式: ①.# ifdef 标识符 程序段1 #else 程序段2 #endif 作用:当标识符在前面已经被定义过(一般用#define),则对程序段1编译,否则 对程序段2编译。 ②.# if 标识符 程序段1 #else 程序段2 #endif 作用:和# ifdef相反,当标识符没被定义过时,才对程序段1编译。 ③.# ifndef 表达式 程序段1 #else

程序段2 #endif 作用:当表达式值为真(非0)时,对程序段1编译,否则对程序段2编译。 条件编译的应用 全局变量应该是得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必须在.C 和.H 文件中定义。这种重复的定义很容易导致错误。 以下讨论只需用在一个头文件中定义一次, 1.首先,说明一个条件编译命令: #ifdef 标识符 程序1 #else 程序2 #endif 先在一个头文件(.h)中输入条件编译命令。 那么,对C程序(.c)进行编译时,若程序包令: #include标识符 或#include标识符0 即:只要有标识符出现,编译时就会加入程序1,一并进入编译。否则,加入程序2。 例:在uCOS_II.H 中包含: #ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif OS_EXT INT32U OSIdleCtr; OS_EXT INT32U OSIdleCtrRun; OS_EXT INT32U OSIdleCtrMax; 同时,uCOS_II.C中包含: #define OS_GLOBALS (当然,所有.C应该都包含#include uCOS_II.H,这样才达到.C文件能访问全局 变量) 这样,当编译器处理uCOS_II.C时,它使得头文件变成如下所示,因为OS_EXT被设置为空。编译器就全局变量分配在内存,而当编译其他不含#define OS_GLOBALS的.C文件时,OS_EXT被设置为extern,表示该变量为外部定义的全局变量,不用再分配内存了。 其实,这样是将一个C文件的所有全局变量定义在一个头文件中,而所有C文件都包含这个头文件,这样防止重复定义一个全局变量而发生错误。

郝斌老师C语言笔记

专题: 动态内存分配(所有高级语言,没有C里深刻) 传统数组的缺点: 1.数组长度必须事先指定,而且只能是常整数,不能是变量 例子int a[5];//必须事先指定,而且只能是常整数 int len = 5; int a[len];//error 2.传统形式定义的数组,该数组的内存程序员无法手动释放 数组一旦定义,系统为数组分配的内存空间就会一直存在,除非数组所在的函数运行终止。 在一个函数运行期间,系统为该函数中的数组分配的空间会一直存在。 直到该函数运行完毕时,数组的空间才会被系统自动释放。 例子:void f(void){int a[5]={1,2,3,4,5};....} //数组a 占20个字节的内存空间,程序员无法手动编程释放它,数组a只能在f()函数结束被系统释放 3. 数组的长度一旦定义,数组长度就不能再更改。 数组的长度不能在函数运行的过程中动态的扩充或缩小 4. 传统方式定义的数组不能跨函数使用 A函数定义的数组,只有在A函数运行期间才可以被其他函数使用, 但A函数运行完毕后,A函数中的数组将无法在被其他函数使用。 #include void g(int * pArr, int len) { pArr[2] = 88; //parr[2]==a[2] 等价于 } void f(void) { int a[5] = {1,2,3,4,5}; //数组a 只在f()执行时有效 g(a,5); printf("%d\n", a[2]); } int main(void) { f(); // 结果: 88 //printf("a[0] = %d\n", a[0]); // error return 0; } 为什么需要动态分配内存 很好的解决的了传统数组的4个缺陷 动态内存分配举例_动态数组的构造难点

郝斌C语言详细笔记(附源码)

郝斌老师的C语言:课堂讲解全程动手敲代码,讲解细致,对于重要知识点的讲解不厌其烦,是一个难得的C语言入门教程。在这里对老师的辛勤付出表示感谢。 郝斌c语言视频教程 · 概述: 课程计划 为什么学习c语言: Fortran语言主要用于科学计算,在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。Basic语言是vb的前生,pascal语言一般是用于教学。C语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。 在面向对象的语言中c++是最复杂的语言。由于c++语言太复杂,sun公司对c++进行了改装,产生了java语

言。而c#是由微软开发的,和java相似,几乎一模一样。 在高级语言的执行速度上,c是最快的,c++其次,而java 和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。 C语言的发展和过程:

C语言的特点: ·优点:代码量小,速度快,功能强大。 ·缺点:危险性高,开发周期长,可移植性弱。 危险性高:写同一个程序,在java中会报错,而在c中不会报错,为什么呢,因为c认为程序你想怎么写就怎么写,c语言认为你写的程序不是很离谱,他都认为你写的这个程序有特殊的含义。可以直接通过,而java 则不可以。 开发周期长:c语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C语言还要造大量的砖块、钢筋等结构原材料,而C++ C# JAVA则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。 现在市场上的语言分三块

c语言学习笔记(数组、函数)

数组 2010-3-29 22:40 一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名数组名【常量表达式】如:int a[8]; 说明:①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。 ③a数组中每个元素均为整型,且每个元素只能存放整型。 ④每个元素只有一个下标,且第一个元素的下标总为0。 ⑤c编译程序,为a数组开辟8个连续存储单元。 3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。 例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。 用逗号分隔开。 2010-3-23 10:29 一维数组元素的引用2 1) 引用形式:数组名【下标表达式】可以是:常量,变量,表达式。 如:double x【8】则x【0】x【j】x【i+k】均合法 2) (1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。 (2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。 数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。 (3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。 如:double a,b; int c[10]; a=2.0;b=3.0; 则a[i]; 是不合法的。 给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。如:int a[]={0,0,0,0,0}; 相当于:a[5]={0};

c语言读书笔记

Vc++读后感 闲来无事,跑来图书馆,突然被一本名叫《致程序员之家论坛的所有会员》的书把我的注意力吸引过去了,于是我用心的读起来了。下面这些是我做的一些笔记。 应该掌握程序运行的原理与机制:学习VC++6.0 在WINDOWS下编程,就应该了解WINDOWS消息机制。(关于消息机制不用太深入,新手学习一个大概流程就可以了) 掌握编程的思想:这点就比较难了,C++的编程就是面向对象,对象的概念一定要清楚。这点重要是多练习自己动手做做小程序。 多动脑,多动手,再加上十分的仔细:关于这点就是一个学习态度的问题了。勤劳和懒惰都是人天生都有的本性,就看我们选择那一个了。 在编写一个程序的时候,要知道为什么要去编它,在程序中的函数为什么这么调用,这个程序的内存模型是怎样的?可以这样说:我们做任何事前都要有目标,有目标才能前进,函数流程就是一个程序的生命,就像人们血液流动的过程一样,从心脏出发经过各个脏器,我们要了解的就是经过那一些,那一些是主要的脏器,这些脏器是用来干什么的。最终回到那里去。内存模型蛮专业化的词,不过不用怕,就是数据在内存客中排列的顺序结构,谁在前面谁在后面了解就可以了。 程序语言的学习,是一个循序渐进的过程,切忌急功近利 这一点我认为最重要,我们往往想静心学习一点东西都不是很容易,总是想一口气吃成个大胖子,这种心态,去学习任何事情都不会成功的,笔者自己也是一样,经常想马上就学会,最后是什么也学不会。只能一步一步来,天才少,努力的人才多。切忌急功近利。 我们往往会因为不知从何入手而不知不觉中走了弯路,停留于表面,你越是着急,反而越容易走弯路,越是搞不懂,就越是需要我们的耐心,不过我也知道这个说说容易做做难,我的方法是,烦的时候回到原点想想你为什么学习编程,也许会对你好一点。每一个人的情况不同,所以要找对自己最有效果的。

(考研复试)C语言笔记资料

(考研复试)C语言笔 记

1:用高级语言编写的程序叫做源程序,然后用编译程序吧源程序翻译成二进制的目标程序,然后将该目标程序与系统函数库以及其他目标程序连接,形成可执行程序。 2:算法五个特点:确定性,有穷性,输入,输出,可行性。 3:程序流程图、N-S盒图、伪代码 4:int 无论有符号无符号,都是16位 Short 无论是有符号还是无符号都是16位 Long 无论是有符号还是无符号都是32位 Float 32位 double 64位,long double 128位。 一个整型常量后面加u就是无符号,加l就是长整型5:\t,\b退格,\r移到本行开头 6:‘0’48,‘A’65,‘a’97,差值32 7:级别char

13:整形给long,同char给int一样, 14:putchar() Getchar() Puts(),gets() Printf(“%md”,d) %d,%c,%f,%ld,%o,%x,%u,%s %d的原意是,按十进制整形数据输出 M表示输出字段的宽度,数字靠右拜访。如果数字太大,就输出数字,不管m. Printf(“%m.ns”,d) 输出占m列,靠右端,只取字符串中的前n个字符,如果n大于m,则不管m Printf(“%-m.ns”,d) 输出占m列,靠左端 Printf(“%m.nf”,d) %f输出实数,包括单精度和双精度,只能输出六位小数, 输出n位小数 Printf(“%m.ne”,d) N指的是输出小数的位数, Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号 Scanf(“%3d%3d”,&a,&b)输入123456.

c语言学习笔记

网络通讯中数据大小端的问题: 大端模式:高位字节放在内存的低地址端,即该值的起始地址;低位字节排放在内存的高地址端。 小端模式:低位字节放在内存的低地址端,即该值的起始地址;高位字节放在内存的高地址端。 数组的名字是一个常量指针,如X【2】,X是一个常量指针,没有分配的内存。 数据存在存储空间,数值不存在。 在C语言里,指针可以访问到任何地方,但是对不应该访问的地址进行访问没有意义,也可能会禁止读写。 函数的接口类型,可变参数的类型和执行跳转: C语言的函数名可以看做一个地址常量(和数组一样)。 系统的堆栈:堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个char a;系统会自动在栈上为其开辟空间。而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到,不过缺点是一旦忘记释放会造成内存泄露。、 、 预处理操作: 宏定义:#define M 3; #define M(x,y) 2*x+y; 预处理对宏的处理,分为3类: 预处理“标识符”的展开; 预处理“标识符”的判断; 预处理“标识符”的文本替换。 #if 0 。。。。 #endif 用作代码注释。 基础类型重定义:一个C程序在PC上开发,逻辑验证正确后,下需要移植到某个嵌入式系统中,但是它们对应的int的位宽定义不同,目标系统是X86时,编译器将其看做32位,而目标系统为嵌入式系统的时候,编译器将其看作16位(对应的32位为long关键词)。这种情况,就需要进行基础类型的重定义: #define _TARGET_X86_SYSYTEM 0 #define _TARGET_DEV_SYSYTEM 1 #define _TARGET_SYSYTEM _TARGET_X86_SYSYTEM #if(_TARGET_SYSYTEM = _TARGET_X86_SYSYTEM) Typedef signed int _i32 Typedef unsigned int _u32 #elif(_TARGET_SYSYTEM = _TARGET_DEV_SYSYTEM)

最新(考研复试)C语言笔记

1:用高级语言编写的程序叫做源程序,然后用编译程序吧源程序翻译成二进制的目标程序,然后将该目标程序与系统函数库以及其他目标程序连接,形成可执行程序。 2:算法五个特点:确定性,有穷性,输入,输出,可行性。3:程序流程图、N-S盒图、伪代码 4:int 无论有符号无符号,都是16位 Short 无论是有符号还是无符号都是16位 Long 无论是有符号还是无符号都是32位 Float 32位 double 64位,long double 128位。 一个整型常量后面加u就是无符号,加l就是长整型 5:\t,\b退格,\r移到本行开头 6:‘0’48,‘A’65,‘a’97,差值32 7:级别char

14:putchar() Getchar() Puts(),gets() Printf(“%md”,d) %d,%c,%f,%ld,%o,%x,%u,%s %d的原意是,按十进制整形数据输出 M表示输出字段的宽度,数字靠右拜访。如果数字太大,就输出数字,不管m. Printf(“%m.ns”,d) 输出占m列,靠右端,只取字符串中的前n个字符,如果n大于m,则不管m Printf(“%-m.ns”,d) 输出占m列,靠左端 Printf(“%m.nf”,d) %f输出实数,包括单精度和双精度,只能输出六位小数, 输出n位小数 Printf(“%m.ne”,d) N指的是输出小数的位数, Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号 Scanf(“%3d%3d”,&a,&b)输入123456. 系统自动把123赋值给a,456赋值给b;同理,如果系统输入abc三个字符,但是ch只能容纳一个,就吧a给ch,bc给后面的。

大学C语言笔记

第一章概述 1. C语言的特点 ①语言简洁、紧凑,使用方便、灵活。共有32个关键字,9种控制语句。 ②运算符丰富,公有34种运算符。 ③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。 ④具有结构化的控制语句(如if…else、while、do…while、switch、for) ⑤语法限制不太严格,程序设计自由度大。 ⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。 ⑦生成目标代码质量高,程序执行效率高。 ⑧可移植性好。 2. C语言的用途 C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。现在很多大型应用软件也用C编写。 Top of Page 第二章数据类型、运算符与表达式 1. C的数据类型 C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。 2.常量与变量 常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的变量名。变量在编译时为其分配相应存储单元。 3.整型数据 整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。 整型变量分为:基本型(int)、短整型(short int)、长整型(long int)和无符号型。不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。 4.实型数据 实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、123 0.0等。指数形式如123e3代表123×10的三次方。 实型变量分为单精度(float)和双精度(double)两类。在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。 5.字符型数据 字符变量用单引号括起来,如'a','b'等。还有一些是特殊的字符常量,如'\n','\t'等。分别代表换行和横向跳格。 字符变量以char 来定义,一个变量只能存放一个字符常量。 字符串常量是由双引号括起来的字符序列。这里一定要注意'a'和"a"的不同,前者为字符常量,后者为字符串常量,c规定:每个字符串的结尾加一个结束标志'',实际上"a"包含两个字符:'a'和''。 6.数值型数据间的混合运算 整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则: char,short -> int -> unsigned -> long -> double <- float 7.运算符和表达式 c运算符包括: 算数运算符(+ - * / % ) 关系运算符( > < == >= <= != ) 逻辑运算符( ! && || ) 位运算符( << >> ~ | ^ & ) 赋值运算符(= ) 条件运算符(? : ) 逗号运算符( , ) 指针运算符( * & )

C语言学习资料经典笔记

下载大学学习资料就到学姐学长网全部资料免费https://www.doczj.com/doc/5a5017889.html, C语言学习资料经典笔记 目录 第一章C语言概述 (1) 第二章算法 (1) 第三章数据类型、运算符与表达式 (2) 第四章顺序结构程序设计 (6) 第五章选择结构程序设计 (8) 第六章循环控制 (9) 第七章数组 (10) 第八章函数 (11) 第九章预处理命令 (13) 第十章指针 (13) 第一章C语言概述 1、C程序的组成和形式的基本特点(P6-7) (1)C程序是由函数构成的,一个C main函数,也可以包含一个main函数和若干个其他函数。 (2)一个函数由两部分组成 a) 函数的首部:即函数的第一行,包括函数名、函数类型、函数属性、函数参 数名、参数类型 例:int max (int x,int y) 一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。函数可以没有参数,如main()。 b) 函数体:即函数首部下面的花括号内的部分。如果一个函数内有多个花括号, 则最外层的一对花括号为函数体的范围。函数体一般包括:声明部分、执行部分 2、运行C程序的步骤及每个步骤生成文件的类型及特点(P7) 第二章算法 1、算法的定义 一个程序应包括①数据结构即对数据的描述;②算法也就是操作步骤。 计算机算法可分为两大类:数值运算算法和非数值运算算法。 2、算法的特性(P19) 1. 有穷性;

2. 确定性; 3. 有零个或多个输入; 4. 有一个或多个输出; 5. 有效性。 3、描述算法的常用方法(P20-33) 2.自然语言; 3.用流程图表示算法。 4.N—S图 5.计算机语言 6.伪代码 4、C程序算法的3种基本结构及其共同特点(P24-25)三种基本结构: a) 顺序结构:最基本; b) 选择结构:又称选取结构或分支结构; c) 循环结构:又称重复结构; a) 当(while)型循环; b) 直到(until)型循环。 共同特点: 1. 只有一个入口; 2. 只有一个出口; 3. 结构内的每一部分都有机会被执行到; 4. 结构内不存在“死循环” 。 5、结构化程序设计的设计原则(P34) a) 自顶向下; b) 逐步细化; c) 模块化设计; d) 结构化编码。 第三章数据类型、运算符与表达式 1 、C语言的基本数据类型和构造数据类型(P37)

C语言基础学习笔记

C语言基础学习笔记 (第一版修改) 丁炳亮 1数据类型和表达式 1.1计算机内数据存储方式 理解与测试: 什么是补码?我们得先知道模的概念。模“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。 二进制中整数的补码求法是:正数的补码为原码,负数的补码是符号位不变其他位全部取反再整个数加1。我们可以通过下面的代码看下负整数在计算机内部的表示。 void f(int n) { unsigned int i; for(i=1,i<<=15;i;i>>=1) { if(i&n) printf("1"); else printf("0"); } printf("\n"); } main() { int a=-0xff; f(a);

} 输出的结果是1111111100000001。 1.2变量与常量 理解与测试: 1)类型声明 在计算机内部数据是以字节为单位存储的,但是我们需要的数据类型有很多种,每种数据类型所占字节和存储方式都不一样。类型声明的作用就是告诉计算机以哪种“格式”去读写该数据数据。 类型说明符变量名1,变量名2......,变量名n; 类型说明符有基本类型(字符型、整数型、单/双精度型)、高级类型(结构体型、共用体型、枚举类型)、指针型等,其中指针类型包括指向基本类型的指针类型、指向高级类型的指针型和指向函数的指针类型(指向函数指针声明格式在后面章节)。 2)符号常量的定义 #define 标识符常量; 使用该种方法定义符号常量一个是可以使代码便于阅读理解,另一个是方便代码内部多个相同常量的统一修改。 总结与注意 在写计算式的时候要考虑变量是否会越界。一般来说计算式子时是先强制转换成式子中最大存储空间的数据类型(不包括被赋值的变量),还要注意不同的类型数据在不同的编译器中所占的内存有可能是不一样的,例如有些编译器整型是占2个字节有些是占4个字节。同时还要考虑到符号的优先级和结合顺序,如果按符号的优先级和结合顺序运算过程中有越界的那么整个计算结果可能和预想的不一样了,例如int i=100;i = 500*i/i;最后i=-155。 1.3输出输入 理解与测试: 1)格式化输入输出函数可以按设定的格式和设定的数据类型接收和输出多个变量。控制格式和数据类型的是数据控制符。 2)字符和字符串可以用专门的输出\输入函数。主要有getch(); putch();getchar(); putchar(); gets(); puts();其中getch()和putch()是conio.h中声明,getch()不需要等待回车键就返回字符并立即执行下面一语句符,getch()不在屏幕显示输入的字符。getchar();putchar(); 在stdio.h中声明。getchar()读取键盘上的一个字符,立即返回并显示在屏幕上,需要等待回车键才能执行下

C语言程序设计谭浩强重点笔记

C语言设计 学习笔记 早晨:06:40 起床 07:20——08:20 英语 1小时 新概念英语(单词、语法、听读背) 大学英语(单词、语法、听读背) 上午:08:30——10:30 计算机基础 2小时 10:50——11:30 计算机科学技术导论 计算机组成原理 微机原理及接口技术 Intel微处理器结构编程与接口 深入理解计算机系统 80x86汇编语言程序设计 8086-8088宏汇编语言程序设计教程 BIOS研发技术剖析 自己动手写操作系统 操作系统原理 Windows操作系统原理 Windows内部原理系列 Windows程序内部运行原理 计算机网络第五版 中午:12:00——02:00 午休 下午:02:30——04:30 计算机应用及编程 Windows用户管理指南、AD配置指南、网络专业 指南、Windows即学即会教程 Windows下32位汇编语言程序设计、C#编程 晚上:05:30——08:00 锻炼、晚餐 08:00——09:00 辅导 09:00——11:00 专业基础 2小时 大学数学、大学物理、电机及拖动、电力电子技 术、通信技术 11:30 休息

目录 第一章C语言概述................................................................................................................................. - 1 - 1.1 C程序结构特点16 ................................................................................................................ - 1 - 1.2 C程序上机步骤17 ................................................................................................................... - 1 -第二章程序的灵魂——算法23 ............................................................................................................ - 2 - 2.1 算法24 ..................................................................................................................................... - 2 - 2.2 算法的三种基本结构............................................................................................................... - 2 - 2.3 结构化程序设计方法42 .......................................................................................................... - 2 -第三章数据类型运算符与表达式48 .................................................................................................. - 2 - 3.1 C语言的基本元素48 ............................................................................................................... - 2 - 3.2 C的数据类型48 ....................................................................................................................... - 2 - 3.3 常量与变量48 .......................................................................................................................... - 3 - 3.4 基本类型................................................................................................................................... - 3 - 3.5 变量63 ..................................................................................................................................... - 4 - 3.6 不同类型数据间的混合运算................................................................................................... - 5 - 3.7 函数的调用过程(补充)....................................................................................................... - 5 -第四章最简单的C程序设计——顺序程序设计77 ........................................................................... - 5 - 4.1 字符数据的输入输出............................................................................................................... - 5 -第五章选择结构的程序设计97 ............................................................................................................ - 6 -第六章循环结构程序设计..................................................................................................................... - 6 - 6.1 语句标号................................................................................................................................... - 6 - 6.2 break语句和continue语句 ...................................................................................................... - 6 -第七章数组132 ...................................................................................................................................... - 6 - 7.1 构造类型................................................................................................................................... - 6 - 7.2 数组133 ................................................................................................................................... - 6 - 7.3 二维数组................................................................................................................................... - 7 - 7.4 字符串——字符数组............................................................................................................... - 7 - 7.5 字符串处理函数#include ...................................................................................... - 7 -第八章函数153 ...................................................................................................................................... - 8 - 8.1 c程序的结构154 ...................................................................................................................... - 8 - 8.2 函数调用参数传递................................................................................................................... - 8 - 8.3 函数变量的作用范围............................................................................................................... - 8 - 8.4 变量的存储类别....................................................................................................................... - 9 -第九章预处理命令197 ........................................................................................................................ - 10 - 9.1 预编译命令作用..................................................................................................................... - 10 -第十章指针211 .................................................................................................................................... - 11 - 10.1 变量的访问方式................................................................................................................... - 11 - 10.2 指针变量............................................................................................................................... - 11 -第十一章结构体270 ............................................................................................................................ - 12 - 11.1 结构体270 ............................................................................................................................ - 12 -

相关主题
文本预览
相关文档 最新文档