02 2019 档案
摘要:用typedef定义类型 1、用typedef声明新的类型名来代替已有的类型名。 例:声明INTEGER为整型 2、声明结构类型 例: 3、声明NUM为整型 4、声明p为字符指针类型 5、声明P为指向函数的指针类型,该函数返回整型值。 注:对数组而言,数组名就是它的地址,它的地址就是它本身。 说明:
阅读全文
摘要:1、所谓建立动态链表是指在程序执行过程中从无到有的建立起一个链表,即一个一个的开辟节点和输入各节点的数据,并建立起前后相连的关系。 例:写一个程序建立一个含有学生(学号、成绩)数据的单向动态链表。 约定:学号不会为0,若输入学号为0,则表示建立链表的过程完成,该节点不应连接到链表中。 提示:若输入的
阅读全文
摘要:C语言中不允许动态数组类型,但C提供了一些内存管理函数,使用其可以动态的分配内存空间。常用的内存管理函数有以下三个: (1)分配内存空间函数malloc、calloc; (2)释放内存空间函数free; 1、malloc函数 原型:void *malloc(unsigned int size); 其
阅读全文
摘要:将一个结构体变量的值传递给另一个函数,有3种方法: (1)用结构体变量的成员做参数。 (2)用结构体变量做实参。 (3)用指向结构体变量的指针做实参,将结构体变量的地址传给形参。 例:有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。通过调用函数print将他们输出。 要求:用结构体变量做
阅读全文
摘要:最近在学C语言程序设计时总是遇到一些概念理解上的不清晰与混乱的地方,在一次偶然间想到了以前看过的一部电影《我是谁,没有一个系统是安全的》,里面的主角用社会工程学的想法结合黑客知识化险为夷,给予了很大的震撼与启发。所以我想如果将现实中C语言的一些概念和人类社会联系起来,会不会产生一些奇妙的结果。 首先
阅读全文
摘要:1、结构体变量的初始化 例: 2、结构体数组 一个结构体变量中可以存放一组数据(如一个学生的学号,姓名,成绩等数据)。若有10个学生的数据需要参加运算,显然应用数组,这就是结构体数组。结构体数组与数值型数组不同之处在于每一个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。 例: 定义结构
阅读全文
摘要:1、文件包含 (1)1个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。 (2)文件包含允许嵌套,即在一个被包含的文件种包含另一个文件。 (3)包含命令中的文件名可以用双括号括起来,也可以用尖括号括起来。但这两种形式是有区别的:使用尖括号表示在包含文件目录
阅读全文
摘要:如:#include<stdio.h>,宏定义命令#define PI 3.14 等。 在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。 1、无参宏定义 无参宏的宏名后不带参数。 其定义的一般形式为:#define 标识符 字符串 其中“#”表示这是一条预处理命令。
阅读全文
摘要:1、指向函数的指针 可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数中的入口地址就称为函数的指针。 例:比较a和b的大小,求大值。 用指向函数的指针作函数参数 函数指针变量常用的用途之一是指针作为参数传递到其他函数,以实现函数地址的传递,这
阅读全文
摘要:区别:1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址)。 2、赋值方式。对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值:char str[20]; str="I love China";而对字符指针变量,可以用如下方法赋值:cha
阅读全文
摘要:(1)用字符数组存放一个字符串,然后输出该字符串。 例:定义一个字符数组,对它初始化,然后输出该字符串。 (2)用字符指针指向一个字符串 例:可以不用定义字符数组,而定义一个字符指针,用字符指针指向字符串中的字符。 对字符串中下标的存取,可以用下标方法,也可以用指针方法。 例:将字符串a复制为字符串
阅读全文
摘要:用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素,但在概念和使用上,多维数组的指针比一维数组的指针要复杂一些。可以认为二维数组是数组的数组。 例:定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 则二维数组a是由3个一维数组所组成的,设二维数组的
阅读全文
摘要:例: 在编译时是将arr按指针变量处理的,相当于将函数f的首部写成f(int *arr,int n); 说明:C语言调用函数时采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,由于数组名代表的是数组首元素地址,因此传递的是地址,所以要求形参为指针变量。 例:将数
阅读全文
摘要:一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用储存单元,它们都有相应的地址。 指针变量既可以指向变量,也可以指向数组元素(把某一元素的地址放在一个指针变量中)。 所谓数组元素的指针就是数组元素的地址。 定义一个指向数组元素的指针变量的方法,与指向变量的指针变量相同。 例:int
阅读全文
摘要:如果已经执行了语句pointer_1=&a; (1)&*pointer_1的含义是什么? “&”和“*”两个运算符的优先级相同,但按自右向左方向结合,因此先进行*pointer_1的运算,再执行&运算。 因此,&*pointer_1与&a相同,即变量a的地址。 如果有:pointer_2=&*poi
阅读全文
摘要:1、地址和指针的概念 (1)地址 内存区的每一个字节都有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。 在C语言中,对变量的访问有两种方式:直接访问和间接访问。 直接访问:如:a=5; 系统编译时,已经对变量分配了地址,例如:若变量a分配的
阅读全文
摘要:1、用static声明外部变量 若希望某些外部变量只限于被本文件引用,而不能被其他文件引用,可以在定义外部变量时加一个static声明。 例:(file1.c) (file2.c) 变量的声明和定义: (1)声明部分出现的变量有两种情况:一种是需要建立存储空间的(如:int a;),另一种是不需要建
阅读全文
摘要:变量从存在的时间(生存期)角度来分,可以分为动态储存方式和静态储存方式。 所谓静态存储方式是指在程序运行开始时由系统分配固定的储存空间的方式。 动态储存方式则是在程序运行期间根据需要进行动态的分配储存空间的方式。 存储空间分为3部分:(1)程序区(2)静态存储区(3)动态存储区。 在C语言中,每一个
阅读全文
摘要:1、局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用他们,在此函数以外是不能使用这些变量的。这称为“局部变量”。 例:float f1(int a)/*函数f1*/ { int b,c; /*a,b,c有效*/ } char f2(int x,in
阅读全文
摘要:数组可以作为函数的参数使用,进行数据传送。数组作为函数参数有两种形式。 (1)把元素作为实参使用。 (2)把数组名作为函数的形参和实参使用。 1、数组元素作为函数实参 数组元素就是下标变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值
阅读全文
浙公网安备 33010602011771号