c语言基础
VPN_LI
这个作者很懒,什么都没留下…
展开
-
内联函数
定义: 内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。 作用: 内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空转载 2017-10-15 11:28:16 · 451 阅读 · 0 评论 -
函数定义与声明的区别
对函数的“定义”和“声明”不是一回事。“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个完整的、独立的函数单位。而“声明” 的作用则是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。从程序中可以看到对函数的声明与函数定义中的函数首部基本上是相同的。因此可原创 2017-10-16 13:00:07 · 10421 阅读 · 0 评论 -
内存泄漏
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄露的原因: 1~分配一个内存块并使用其中未经初始化的内容; 2~释放一个内存块,但继续引用其中的内容; 3~子函数中分配的内存空间在主函数出现异常中断时、或主函数对子函数返回的信息使用结束时,没有对分配原创 2017-11-17 20:44:19 · 283 阅读 · 0 评论 -
结构体
定义结构体一般形式为: struct 结构体名 { 成员表列 }变量名表列; 例如:struct student{ int num; char name[20]; char sex; int age; float score; char addr[30];}student1,student2;说明: 1原创 2017-11-28 17:28:19 · 359 阅读 · 0 评论 -
void 无类型
void 无类型 void不能定义变量,void是抽象类型,没有对应的实体,但void可以定义指针,被称为泛型指针。只要是指针, 都可以存放,但它不具有加1能力也不能读取,*p不能对内存解释(*p = a;//错误。p++;//错误)。void main(){ int a = 10; double dx = 12.23; char ch = 'a'; int原创 2017-11-16 18:32:57 · 354 阅读 · 0 评论 -
单位矩阵
问题描述: 1、row == col时,如果p[row][col] == 1,它就是单位矩阵。 2、row != col时,如果p[row][col] == 0,它就是单位矩阵。 源代码: 1、用一级指针#include< stdio.h>#include<assert.h>bool identity_matrix(int *p, int row, int col){ asse原创 2017-12-22 16:39:40 · 2285 阅读 · 0 评论 -
一些对于字符串操作的函数
strcnpy函数 strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于 string.h,char *strncpy(char *dest, const char *src, int n),把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。 函数原型char *strncpy(char *dest,char *src,原创 2017-12-22 17:05:33 · 359 阅读 · 0 评论 -
跳转语句
跳转语句中断当前的执行过程。C++语言提供了4种跳转语句:break、continue、goto和return。 1、break语句 break语句负责终止离它最近的whlie、do whlie、for和switch语句,并从这些语句之后的第一条语句继续执行。 break语句只能出现在迭代语句(循环)或者switch语句内部(包括嵌套在此类循环里的语句或块的内部)。break语原创 2017-10-14 23:35:18 · 507 阅读 · 0 评论 -
宏(#define)、枚举(enum)、常变量(const)
宏和枚举的区别:宏和枚举之间的差别主要在作用的时期和存储的形式不同,宏是在预处理的阶段进行替换工作的,它替换代码段的文本,程序运行的过程中宏已经不存在了。而枚举是在程序运行之后才起作用的,枚举常量存储在数据段的静态存储区里。宏占用代码段中空间,而枚举除了占用空间,还消耗CPU的资源。常变量(const)与符号常量(#define)的区别:符号常量不占用内存空间,在预编译时就全部由符号常量的原创 2017-09-27 17:36:56 · 843 阅读 · 0 评论 -
带负号字符串转换成整型
#include #include #include int StrToInt(char *p){int len = strlen(p);int i = 0;int flag = 0;if (len == 0){return -1;}if (p[0] == '-'){i = 1;flag = 1;}int sum = 0;f原创 2017-09-28 07:51:21 · 4183 阅读 · 0 评论 -
typedef与#define的区别是什么?
typedef是为原有类型声明一个新的名字,“typedef int* PINT_TYP ”就是声明了一个新的数据类型,数据类型名为PINT_TYP,其功能与int *是完全一样的,也就是说,PINT_TYP与int *本质上完全相等(在程序中遇到PINT_TYP不是简单地替换)。而“#define PINT_DEF int*”是简单的宏定义,在预处理阶段就已经将PINT_DE转载 2017-09-29 10:58:50 · 370 阅读 · 0 评论 -
数组和指针的区别与联系
区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度。而且数组在定义之初就已经有了自己的内存,一般的指针如果未原创 2017-10-20 14:49:43 · 333 阅读 · 0 评论 -
9*9乘法表
#includeint main(){for(int i = 1;i{for(int j = 1;j{printf("%d*%d=%d\t",i,j,i*j);}printf("\n");}return 0;}原创 2017-10-13 19:08:59 · 373 阅读 · 0 评论 -
输入一个字符串,大写转换成小写,小写不变。
#define _CRT_SECURE_NO_WARNINGS#include#includevoid main(){char s[80];int i, a;scanf("%s", &s);a = strlen(s);for (i = 0;i {if (s[i] >= 'a'&&s[i] {printf("%c", s[i]); }if原创 2017-10-13 22:20:23 · 976 阅读 · 0 评论 -
快速排序
思路: 1、先从数列中取出一个数作为基准数。 2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3、再对左右区间重复第二步,直到各区间只有一个数。 例如: 将low指向头,high指向尾,将基准值放在tmp中,一次快排过程,如图: 源代码:int Partion(int *arr, int low, int high)//第一次快排{原创 2018-01-25 17:11:22 · 225 阅读 · 0 评论