c语言基础篇
文章平均质量分 64
我真的不是大坏人
酷的像风,野的像狗
展开
-
c语言基础(五)
数组1.格式 类型名(int[10])+变量名(arr):int arr[10]表示包含十个int类型元素的数组。 定义数组的时候,数组的大小就确定了 2.数组初始化 完全初始化:int arr[s]={1,2,3,4,5,}; 数组没有制定大小,编译器默认后面的初始化是完全初始化在数组中,有{}则初始化,另外上式中5后边的,不影响s这个数规定数组大小,当然也可以不规定数组的大小,但需要原创 2017-11-28 11:53:53 · 260 阅读 · 0 评论 -
c语言基础(十五)
信号量信号量:解决进程之间通信时,资源的一个同步和互斥。 对信号量由两个操作(PV操作),这两个操作都是原子的。 原子操作:要不执行,要不执行,一旦执行肯定可以完成。 信号量对于某种资源(buffer),是一个非负的整型值。信号量>0时,就表示资源可以用, 你就可以进行原子操作。信号量==0,这里就不能操作这个资源,...原创 2018-05-07 16:23:25 · 269 阅读 · 0 评论 -
c语言基础(十四)
消息队列消息队列:默认发送端将信息放在前一个信息的后面,接收消息端可以指定接受哪一个消息。 1、msgget:创建和打开一个消息队列 int msgget(key_t key, int msgflg) 键值,这个键值就可以创建不同进程的消息对列。 参数1:键值;参数2:权限有关 ftok获得特定的键值。原创 2018-05-07 16:20:00 · 506 阅读 · 0 评论 -
c语言基础(十三)
1、进程结束后资源处理的问题 每一个进程结束之后都会涉及到资源清理的问题:资源1:操作系统会回收里的进程中涉及到资源(栈、堆(malloc)、文件IO);资源2:进程建立时,会自动产生一个task_struct(8KB),这个就是你这个当前进程 包含所有信息的一个结构体(来自于父进程),这个结构体相当于(文件描述符),他是进程描述符。存在于进程管理表中,这里的资源操(进程运行也是需要栈)作系统无原创 2018-05-07 15:57:48 · 172 阅读 · 0 评论 -
c语言基础(十二)
1、main函数:一个程序运行起来就是一个进程,我们真实的代码是先进行链接,就是把C文件各个段进行 组合起来,这个需要链接器,为我们程序作引导的那部分代码此时也就链接到我们的.o文件里(其中最重要的是main函数里的参数就是此时进入目标文件的)。接着就需要加载器,将我们的代码加载固定的虚拟地址。这个就是一个进程的 完整步骤。 2、(1)程序正常终止:方式:exit _exit return原创 2018-05-07 15:49:02 · 361 阅读 · 0 评论 -
c语言基础(十一)
文件: 1、静态文件(inode) 硬盘中的文件,就是静态文件。文件都是以多个块和多个扇区组成的。一般情况,一个扇区(512字节),64个扇区组成一个块。在硬盘中,对文件管理有一个特定规则(文件管理表+真实的内容):文件管理表,这个表中是以文件为单位提供了各个文件的所有信息 (每一个文件信息表就对应一个结构体,这个结构体就称之为inode,也叫i节点,这个文件的包含的多少块、多少扇区),而我们通原创 2018-05-07 15:32:42 · 134 阅读 · 0 评论 -
c语言基础(十)
内存内存:配置的内存是物理器件,程序运行起来是在虚拟内存中运行。 swap:虚拟内存,真实内存的1-1.5倍 虚拟内存分段:栈段、堆段、代码段(.text) 、roread段、文件映射区、内核区、数据段、.bss段(1)存储类有一些关键字专门用于描述:变量存储的地方(内存) 栈,如:栈上变量储存关键字auto。1、通常情况下,用占的地方,普通变量。2、函数传参,函数参数相当于...原创 2018-01-04 12:05:24 · 193 阅读 · 0 评论 -
C语言学习大纲
一、C语言基础1、C语言特点及其运行环境2、C语言和面向对象语言C++、JAVA的比较3、介绍基本数据类型、运算符、关系表式4、条件判断语句if+else、If + else if + else、switch +Csae语句5、循环语句:while、do + while、for6、位操作运算符:&、|、~、^ 逻辑运算符:&&、||、!。二、C语言函数 1、自定义的函数声明和定义、以原创 2018-05-01 17:59:36 · 310 阅读 · 0 评论 -
c语言基础(九)
结构体函数结构体中不能调用函数,需要声明函数指针#include<stdio.h>typedef int (*p_func)(int a, int b);//C++里面面向对象,多态int add(int a, int b){ return a + b;}//结构体各成员默认是public//class在C++里,是一个类,所有成员和方法(函数)是si(private)有的,只能在原创 2017-12-27 19:08:05 · 221 阅读 · 0 评论 -
c语言基础(八)
字节对齐结构体内成员对齐规则: 1、我们的结构体变量本身就是在4字节对齐的位置,编译器帮我们做的事。 2、第一个成员,就从结构体开始的地址处,存放。这个元素,具体占多少字节,由紧挨着下个元素决定。 3、整个成员变量自身都对齐 了,还没有结束。 4、整个结构体还要是默认字节对齐的最小整数倍。 结构体默认的字节对齐:成员变量最大的那个类型所占字节#include<stdio.h>typedef原创 2017-12-26 18:01:39 · 174 阅读 · 0 评论 -
c语言基础(六)
指针1.指针用于保存地址的,地址是一个数字 定义一个指针变量p,类型是int* ,指向一个int型的数据 int *p 涉及的指针符号:* & p = &a;//指针的绑定,&a是一个int*类型 *p = 23;//指针的解引用, * 作为解引用的符号,*p得到了变量(a) 2. 定义指针的同时并且初始化 int *p1 = &a; //== int *p, a; p =原创 2017-12-04 21:28:56 · 205 阅读 · 0 评论 -
C语言基础(七)
关键字 volatile可变的,编译器不会做优化,每次都是从内存中重新读取数据 正常情况下:内存——>寄存器——>cpu volatile:内存——>cpu二维数组二维数组的数组名是数组第一个元素的首地址,也就是arr=&arr[0] arr[0]是第二位的数组名,也就是arr[0] == &arr[0][0] arr[0][0]是元素了,就没有地址啥事了 一重指针和二维数组匹配int *原创 2017-12-20 20:03:39 · 289 阅读 · 0 评论 -
c语言基础(四)
函数1.函数声明、定义、调用#include包含头文件,#必须有,< >包含真正头文件,头文件只服务函数。预编译时要先进行头文件的展开——函数声明预编译时要进行宏定义中宏的展开和替换。头文件有默认路径,有函数声明(.h)<>指定路径。函数套函数构成一个项目在C语言中,函数的定义顺序是有讲究的:默认情况下,只有后面定义的函数才可以调用前面定义过的函数,举个栗子int sum(int a, i原创 2017-11-22 23:25:42 · 362 阅读 · 0 评论 -
c语言基础(三)
位运算位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 分别为:& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或原创 2017-11-16 17:31:04 · 152 阅读 · 0 评论 -
c语言基础(二)
c语言的三种基本结构在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;1.顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句;2.选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;3.循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。顺序结构举个栗子#includ原创 2017-11-16 17:20:58 · 151 阅读 · 0 评论 -
c语言基础(一)
#include<stdio.h>void main(void){ printf("hello,world.\n"); return 0;}上文所示的是一个最基本的C语言程序,我们在这段最简单的C语言程序中能够看到有1.源文件:hello.c2.头文件:#include<>中包含的即为头文件3.关键字:在上述程序中main为主函数,程序运行的入口,return是函数结束的原创 2017-11-16 16:57:49 · 207 阅读 · 0 评论 -
c语言基础(十五)
线程进程可以完成多任务,实现宏观上的并行。 进程短板:1、通信 2、切换开销很大。 为什么需要线程? 其实,在真实的操作系统中,程序运行的最小单位是线程,进程的实质是分配资源。 多线程隶属于一个进程,实现并发,独立运行。通信方便。 不好的地方:同步和互斥就是关键的处理地方。 现代多核心计算机原创 2018-05-07 16:41:44 · 213 阅读 · 0 评论