
每日博客
橆黯酷奀
这个作者很懒,什么都没留下…
展开
-
C语言常用运算符优先级
一.1级(左结合) ( ) 圆括号;[ ]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。2级(右结合) “ ! ”逻辑非运算符;“ ~ ”按位取反运算符;“ ++ ”前缀增量运算符;“ -- ”前缀减量运算符; “ - ”负号运算符;(类型)类型转换运算符;“ * ”指针运算符;“ & ”地址运算符。3级(左结合) “ * ” 乘法转载 2016-11-03 22:43:01 · 453 阅读 · 0 评论 -
数组相关
一维数组: 数组名是指针常量,保存数组首元素的地址。 a[4] ; a 数组首元素地址,&a 数组的地址; *(&a)= a;对一维数组地址取值 = 数组首元素地址;二维数组: int a[ ][2] = {1,2,3,4} 二维数组名,指针常量,保存首个一维数组的地址; a + i ;第 i - 1 个一维数组的地原创 2016-11-16 22:42:36 · 168 阅读 · 0 评论 -
二维数组
1.二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n。二维数组又称为矩阵,本质上是以数组作为数组元素的数组。 int a [3][4]总共是12个元素,可以当做3行4列看待,这12个元素的依次是a [0][0] a [0][1] a [0][2] a [0][3]a [1][0] a [1][1] a原创 2016-11-01 22:27:35 · 554 阅读 · 0 评论 -
sizeof与strlen
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。 char aa[10];cout char aa[10]={'\0'}; cout char aa[10]="jun"; cout 而sizeof()返回的是变量声明后所占的内存数,转载 2016-11-29 22:32:29 · 199 阅读 · 0 评论 -
Linux密码隐藏输出 *
代码如下:#include#include // curses.h为图形函数库 编译时加 - lcursesint main(){ int i,j=0; char ch; initscr(); //使用curses库,程序开始时要加 initscr()来初始化屏幕,退出程序前要加 endwin()转载 2016-11-17 22:30:32 · 614 阅读 · 0 评论 -
malloc,ralloc,calloc工作原理及区别
(一):malloc.原型extern void *malloc(unsigned int num_bytes);头文件#include #include 功能 请求系统动态分配num_bytes个字节的空间,如果分配成功则返回第一个字节的地址,并且可以进行强制类型转换,告诉系统分配 空间中存储的是那种类型的数据。否则返回空指针NULL。转载 2016-11-14 22:05:52 · 330 阅读 · 0 评论 -
关键字register、static、extern、const作用
1,、register:只能修饰局部变量,不能修饰全局变量和函数,请求编译器尽可能地将频繁使用的变量(如,循环变量)存放在CPU寄存器中,所以修饰的变量不能通过取地址获取地址,也省去了cpu从内存中抓取数据的时间,但修饰的变量一定是处理器支持的类型。2、static:既能修饰变量也能修饰函数,修饰变量时既能修饰全局变量也能修饰局部变量;修饰全局变量时只能在本文件使用,修饰局部变量时延长原创 2016-11-21 22:57:56 · 225 阅读 · 0 评论 -
volatile关键字
1.volatile的本意是“易变的” 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则转载 2016-11-22 21:35:36 · 167 阅读 · 0 评论 -
递归
如何快速正确的写出递归函数?写一个递归函数是非常程式化的东西,只要按照一定的规则来写,就可以很容易地写出递归函数。写递归函数有三步:①写出迭代公式;②确定递归终止条件;③将①②翻译成代码。以求n!为例:①写出迭代公式:n!的迭代公式为②确定递归终止条件:1!=1就是递归终止条件③将①②翻译成代码:将迭代公式等号右边的式子写入return语句中,即return (fact转载 2016-12-02 23:18:19 · 247 阅读 · 0 评论 -
文件编程相关函数(一)
1.creat 建立文件或创建文件函数原型:int creat(const *pathname,mode_t mode);函数入参:pathname 要建立的文件路径字符串 “/home/hello.c” mode 建立文件的权限函数的返回值:成功返回文件描述符,出错返回-1头文件:#include原创 2016-12-05 17:01:29 · 228 阅读 · 0 评论 -
关键字inline
1 inline只是个编译器建议,编译器不一定非得展开Inline函数。 例如: Inline函数地址引用 inline在递归函数中使用2 inline必须用于函数定义,对于函数声明,inline不起作用 例如: inline max(int,int); //没有Inline作用 只有 i转载 2016-11-23 22:48:46 · 324 阅读 · 0 评论 -
typedef与define
typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。 #define是预处理指令。下面让我们一起来看。typedef是C语言语句,其功能是用户为已有数据类型取“别名”。 例如: typedef int INTEGER; 这以后就可用INTEGER来代替int作整型变量的类型说明了,如: INTEGER a,b;转载 2016-11-24 22:00:48 · 199 阅读 · 0 评论 -
小数进制转换
1.十进制小数→二进制小数 方法:“乘2取整”对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位如:0.25的二进制0.25*2=0.5 取整是00.5*2=1.0 取整是1即0.2原创 2016-11-11 22:57:16 · 5386 阅读 · 4 评论 -
避免野指针
养成良好的编码习惯:1.当指针没有指向时置为NULL;2.指针指向空间赋值时,是否分配空间 char *ptr =(char *)malloc(sizeof(char) * 100) malloc返回值为void * ,(char *)为强制类型转换。3.检查ptr 是否等于NULL,分配是否成功;if(ptr == NULL){ printf(“ m原创 2016-11-15 22:48:40 · 263 阅读 · 0 评论 -
c语言变量声明
1.右左法则int a;整型变量int *a;整型指针变量int **a;整型指针的指针变量int a【10】;整型数组int *a【10】;整型指针数组int (*a【10】)(int);函数指针数组2.int * (* (*fp1) (int) ) [10]; fp1:是一个函数指针变量,指向一个形参为int ,返回值为数组指针,该指针指向一个整型指原创 2016-10-31 22:35:34 · 304 阅读 · 0 评论 -
进制转换
1.2进制从最后一位开始(从右向左),把每一位数字分别乘以2^0,2^1,2^2,2^3...然后全部加起来就是对应的10进制数了2.2进制转成8进制,从右向左,每三位一组隔开(最左边那组可能不到3位),然后用计算10进制的方法,计算每一组的三位二进制数所对应的数字,然后把每一组的结果,从右向左写出来,比如(110110)2进制=(110|110)2进制=(66)8进制3.2进原创 2016-11-04 22:23:09 · 299 阅读 · 0 评论 -
11.5笔记
1.bit (32位系统)字节 = 8bit 半字 = 16bit 字 = 32bit int = 4字节; short = 2 ; double = 8 ; float = 4 ; char = 1 ; long = 4 ; (指针变量为4字节,地址长度固定 )2.unsigned char : 0 ~ 255 ;原创 2016-11-05 22:28:26 · 231 阅读 · 0 评论 -
C语言位运算
1 “按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。按位与运算: 00000011&00000101 = 00000001由此可知3&5=1(1)清零 :原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。(2)保留指定位:与一个数原创 2016-11-06 23:24:15 · 214 阅读 · 0 评论 -
printf相关
1) 类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示: 格式字符 意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f转载 2016-11-07 21:41:28 · 165 阅读 · 0 评论 -
形参和实参
1、形参 变量只有在被调用时才分配 内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在 函数内部有效。 函数调用结束返回主调用函数后则不能再使用该形参 变量。2、 实参可以是 常量、 变量、 表达式、 函数等,无论实参是何种类型的量,在进行 函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。3、 实参和形参转载 2016-11-08 21:12:12 · 205 阅读 · 0 评论 -
函数返回值
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a;那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。2. 但是对于非动态分配(new/转载 2016-11-09 22:44:31 · 548 阅读 · 0 评论 -
动态库与静态库
1.库文件:用来保存变量、文件,可以使用但看不到实现。/lib 系统库/usr/lib 程序库2.静态库(后缀 .a )系统在编译过程中将程序的目标文件和所需的函数库文件链接在一起;是在执行程序之前就已经加入到执行代码中,成为执行程序的一部分来执行的。3.动态库( .so )程序在运行过程中需要使用时才链接函数库;在执行程序启动时加载到执行代原创 2016-10-29 22:29:10 · 233 阅读 · 0 评论 -
C语言函数的递归
1.递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。 说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。 2、可以应用这个转化过程使问题得到解决。 说明:使用其他的办法比较麻烦或很转载 2016-10-28 22:36:13 · 363 阅读 · 0 评论 -
c语言指针
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。[1] 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之转载 2016-10-27 22:03:22 · 196 阅读 · 0 评论 -
linux部分命令笔记
1.su - 用户名 切换用户 如: su - root 切换到超级用户adduser 用户名 添加用户 。 adduser yy 添加用户 yypasswd yy 为yy用户添加口令ls -l 查看详细内容 [root@localhost ~]# #超级用户 ~ 当前用户的工作目录 [yy@localhost原创 2016-10-26 22:26:29 · 231 阅读 · 0 评论 -
linux系统根目录各文件的作用
1.root 系统管理员的主目录,存放管理员相关文件。2.home 存放普通用户相关文件的目录 3.bin 常用命令目录4.boot 存放引导相关的文件,/boot目录存放引导加载器(bootstrap loader)使用的文件5.dev /dev 目录存放设备文件,即设备驱动程序,用户通过这些文件访问外部设转载 2016-10-24 22:24:18 · 1261 阅读 · 0 评论 -
辗转相除法求最大公约数与最小公倍数
1.由于辗转相除是不断通过余数来作为除数的,所以刚输入的数据,一定是大除以小。为了保证数据的严密,需要比较调整一下两数大小。if (a{c=a;a=b;b=c;}保证了a>=b。2.辗转相除求最大公约数while (b!=0){c=a;a=b;b=c%b;}此时,a为最大公约数。3.求最小公倍数有了最大公约数,最小公倍原创 2016-11-25 22:22:42 · 857 阅读 · 0 评论