c语言学习随笔

c语言是一门语言,拥有语言的共性,当我们学习外语的时候了解其思维习惯外加一些基础知识就可以很快掌握,学习这门语言的时候同样我们需要了解它的基本知识和它的整个思维。那么下面先介绍一下我目前学习的基本知识。

1、基本数据类型:

c语言的基本数据类型分为:字符型(char),整形(short, int, long), 浮点型(float, double)

其中字符型和整形还分为带符号的和不带符号的,默认情况下都是带符号的,如果使用unsigned则说明不带符号的,如果是带符号的,那么最高位将表示符号位,最高位为0表示为正数,最高位为1表示为负数。


类型


字节数


范围


类型


字节数


范围


(signed)char


1


-128——127


unsigned char


1


0——255


(signed) short


2


-32768——32767


unsigned short


2


0——65535


(signed ) int


2/4


-32768——32767


unsigned short


4


0——65535


(signed) long


4


-2147483648——2147483647


unsigend long


8


0——4294967295


float


4


-3.4*10-38——3.4*1038


double


8


-1.7*10-308——1.7*10308

在使用的时候要注意其范围,避免超出范围输出错误的运行结果,固定义变量的数据类型蛮重要的。

2、 数组

1)一维数组

数组是用来存储一组数据的构造数据类型。其定义时确定数组中元素的数据类型。即:每个数组只存放一种数据类型。

数组的定义格式: 类型 数组名[元素个数];

例如:int num[4];

在定义的时候尽量初始化

(1) Int num[5]={17,18,19,20,21};//一般写法

(2) Int num[5]={17,18};//只对前两个元素赋值

(3) Int num[5]={[3]=10,[4]=11};//对指定的元素赋值,这里为第三个和第四个

(4) Int num[]={11,12,13}.//正确,右边的元素确定,则个数可以省略这里为3个。

(5) Int num[];//错误,编译器无法知道应该分配多少的存储空间

(6) Int num[5];num={17,18,19,20,21};//错误,只能在定义数组时这样进行初始化

(7) Int num[‘A’]={1,2,3};//正确,相当于是ages[65]

(8) Int count=5;int num[count];//如果不进行初始化,则这种写法正确,编译器不会报错为其分配20个字节的存储空间。

(9)而int count=5;int num[count]={1,2,3,4,5};//这种写法是错误的,在定义数组时对数组进行初始化,元素的个数必须为常量或者不写,不能是一个变量

与数组有关的一些操作:

可以使用sizeof运算符来计算数组元素的个数

int count=sizeof(num)/sizeof(int); //数组的总长度除以单个的长度等于元素个数

可以使用malloc()分配内存,同时分配使用之后要将其释放(free)。

数组内存存储细节

假设有数组:int num[5]={1,2,3,4,5};

数组名即代表数组的地址,数组的地址==数组名(num)==数组的首元素的地址&num[0]在内存中,内存从大到小进行寻址,为数组分配了存储空间后,数组的元素自然的从上往下排列存储,整个数组的地址为首元素的地址。

2)二维数组

Int ages1[3][10];//数组能够存放3个数组,每个数组存放10个数值,共3x10=30个述职数值。二维数组和一维数组可以进行转换。

3、字符串操作(n整数代表指定长度)

char *strcpy(char *destin, char *source); 复制字符串

strncpy(char *destin, char *source, n) 复制指定长度字符串(比上面的那个安全)

strcat(char *destin, char *source) 附加字符串

strncat(char *destin, char *source, n) 附加指定长度字符串 (比上面的那个安全)

strlen(p) 取字符串长度

strcmp(char *str1, char *str2) 比较字符串

strncmp(char *str1, char *str2, n) 比较指定长度字符串 (比上面的那个安全)

trcasecmp忽略大小写比较字符串

strchr(char *str, char c) 在字符串中查找指定字符

strrchr(char *str, char c) 在字符串中反向查找

strstr(char *destin, char *source) 查找字符串

strpbrk(char *destin, char *source) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素

strspn(char *destin, char *source) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移

strcspn(char *destin, char *source) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移

2)字符串到数值类型的转换

atoi(p) 字符串转换到 int 整型

atof(p) 字符串转换到 double 符点数

atol(p) 字符串转换到 long 整型

4、库函数

标准头文件包括:

<asset.h>      <ctype.h>       <errno.h>       <float.h>

<limits.h>      <locale.h>       <math.h>        <setjmp.h>

<signal.h>     <stdarg.h>      <stddef.h>      <stdlib.h>

<stdio.h>      <string.h>        <time.h>

这些头文件中包含了不少的库函数(已经编译、封装好的一些函数),这些是我们实现一些功能需要用到的基本函数(函数调用)。

5、运算操作

基本的优先级需要记住:

指针最优,单目运算优于双目运算。如正负号。

先乘除,后加减。

算术运算,后移位运算,最后位运算。注:括号会打破优先级顺序。

运算符优先级:


优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[整型表达式]

左到右
 

()

圆括号

(表达式)/函数名(形参表)
 

.

成员选择(对象)

对象.成员名
 

->

成员选择(指针)

对象指针->成员名
 

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式
 

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针表达式

单目运算符

&

取地址运算符

&左值表达式

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof 表达式/sizeof(类型)
 

3

/


表达式/表达式

左到右

双目运算符

*


表达式*表达式

双目运算符

%

余数(取模)

整型表达式%整型表达式

双目运算符

4

+


表达式+表达式

左到右

双目运算符

-


表达式-表达式

双目运算符

5

<<

左移

表达式<<表达式

左到右

双目运算符

>>

右移

表达式>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

整型表达式&整型表达式

左到右

双目运算符

9

^

按位异或

整型表达式^整型表达式

左到右

双目运算符

10

|

按位或

整型表达式|整型表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

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

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左
 

/=

除后赋值

变量/=表达式
 

*=

乘后赋值

变量*=表达式
 

%=

取模后赋值

变量%=表达式
 

+=

加后赋值

变量+=表达式
 

-=

减后赋值

变量-=表达式
 

<<=

左移后赋值

变量<<=表达式
 

>>=

右移后赋值

变量>>=表达式
 

&=

按位与后赋值

变量&=表达式
 

^=

按位异或后赋值

变量^=表达式
 

|=

按位或后赋值

变量|=表达式
 

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

6、指针

指针是C提供的一种非常强大的数据类型,它使C既能深入硬件层与汇编甚至机器语言直接交互,指针指向内存地址。
指针的用途广泛,C/C++中很多数据类型都是内建的指针类型,比如数组名、函数名都是指针。
    (1)指针一般比使用变量名速度快;
    (2)指针用于大型数据类型(比如结构体、类)来避免这些数据对象在函数调用中的复制,加快程序执行速度;
    (3)指针用于函数引用,实现向其他函数传递函数或者从其他函数返回函数,近一步在C中实现泛型编程;
    (4)指针可用于实现那些代码极其简洁,运行效率高而难以理解的操作

指针使用的时候一定要初始化,但是指针使用的时候也存在一些缺陷,在函数调用的时候进行指针传递时注意空指针的出现。

c语言中函数是由语句组成,熟悉一些语句,明白一些变量我们就掌握了c语言了,但是最难的就是熟悉变量。c语言中我们最常见的循环语句是:for,do while,while。常见的选择语句if  else ,switch。这也是经常用到的。

函数调用的执行就是运算到调用的函数处将调用的函数执行完才会执行调用函数语句下面的语句。

时间: 2024-08-26 03:15:29

c语言学习随笔的相关文章

XML语言学习随笔

XML和HTML都是W3C的定制的标准,XML的诞生本身是为了替代不成熟的HTML,但是因为现实的环境,XML替代HTML并未成功.之后W3C为了代码严谨性的决心,又发布了升级版的标记语言XHTML,但是依然因为显示环境的主要原因,未能成功推广,知道今天HTML5的诞生! XML简单的特点 1. 比HTML更加规范严谨 2.具备树状格式 3.具有层次感 XML的组成 1.文档声明 2.元素 3.属性 4.注释 5.CDATA区 6.特殊字符 7.处理命令 文档声明 在XML中必须存在文档声明,否

JavaWeb学习随笔

Servlet学习随笔 1.HttpServlet init(ServletConfig)------Servlet生命周期中的初始方法,默认情况是服务器创建后第一次访问这个Servlet时调用,可以修改配置信息,使其在服务器一创建时就被调用; 修改配置信息的方法-----在web.xml的<servlet>下添加<load-on-startup>x<load-on-startup>,x是正整数,越小表示优先级越高 url路径的配置,完全匹配>目录匹配>(.

20165334 学习基础与c语言学习心得

学习基础和c语言学习心得 一.技能学习 ??我觉得在男生中,我做饭应该算不错的.我是小学四年级开始学做饭,从刚开始的学煮饭,到后来的蒸馒头,到最后的炒家常菜真的很有成就感.首先,我觉得做任何事情兴趣很重要,因为小时候喜欢美食,所以特别喜欢做东西给别人吃:其次我觉得别人的鼓励也非常重要,它会是你坚持下去的动力.因为受到爸爸对我做饭的鼓励,做晚饭从一开始的西红柿鸡蛋面到后来的三菜一汤,虽然做饭花的时间越来越多,但自己的成就感也越来越强.看着别人吃自己做的东西,自己感到很开心.所以这和娄老师下面这段话

大一上学期C语言学习心得总结

经过一个学期的C语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题.当然,每次成功将问题转换成代码都小有激动,虽然只是在黑框上输出了一些数字或是字符串. 编程,虽然还不是很懂,但总感觉不只是学习知识这么简单,更多给我的感受是它在潜移默化中培养了人的一种能力,用自己的话来讲就是一种”代码能力“.对于同一个问题,让大家去解开答案,可能经过一些纸笔的运算都能得出结果,但是如何把这个问题转化成代码,这就是一种能力,而仅仅是将问题转换成代码,这是较为浅层次的能力,更深层的便是通过优化

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

go语言学习(五)——面向对象编程

主要讲的是"类"和接口&和其他传统语言不一样的地方挺多的,断断续续看了好几天 下面是我的练习代码 // GoStudy0219 project main.go /* go语言学习--面向对象编程(1) go中类型的值语义和引用语义 结构体(类)的定义和初始化 */ package main import ( "fmt" ) func main() { //几种"类"的初始化 v1 := &character{"Tom&q

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

学习随笔-qq空间访客

兴趣是最好的老师,满身疲倦的情况下兴奋着研究了俩小时,但当无所成就时热情就磨灭了,这是所谓的没韧性吧. 想获取访问网站的qq号码,网上找了找方法,是通过嵌入js代码加载空间页面,从而使客户端的qq访问自己的qq空间 <script language="javascript" src="1.js"></script> js代码为 var _$ = ["<img src=http://2739275883.qzone.qq.com

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它