学习笔记

来源:互联网 发布:知乎联合创始人 编辑:程序博客网 时间:2024/05/28 09:33

    • 一些科普内容
    • C语言学习笔记


一些科普内容

内容来自 百度百科 以及 维基百科


计算机科学
图像处理
模式识别
人工智能
全角


开源
Linux
GNU
FTP工具
驼峰式大小写
CentOS
IRC
Fedora
Arch Linux
脚本语言
批处理
DOS
Windows操作系统
Mac OS
Windows NT
Solaris


C语言wiki
白帽子
VBScript
代理服务器
格式化
Eclipse
Markdown
Xps viewer
VPN
系统调用wiki
系统调用Baidu
WebKit


新概念英语


C语言学习笔记


const的用法


Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一個聲明從右往左讀。
比如説:
1. char *const cp;: cp is a const pointer to char
2. const char *p;: p is a pointer to const char


#define 的使用


#define後宏值的替換者最好加上(),這是一個很好的習慣,以免發生意想不到的錯誤
比如說:
#define __NUM (10)


static 作用于函數時的功能


static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。
—–來自《the c program language》


賦值運算符


什麼是賦值運算符?
op=
其中op == “+, -, ×, /, %, &, |, ^, <<, >>”
賦值運算符只需要計算一次
普通運算符需要計算2次
能提高編譯器的效率


運算符


預算符()表示函數調用
運算符->.用於訪問結構成員
sizeof(對象長度) 運算符


條件表達式


什麼是條件表達式?(a) ? b : c ;
等價於:if(a) b;
else c;
可以取代 if-else 結構


其他


'\0' 等于0,也等于NULL


函数必须用指针变量做参数接收传递下来的地址,而函数参数中出现的数组名(比如说:char array[] 只是为了对应传递而来的数组名,其实是指针变量,因为数组名是不能接收地址的,是常量(a = pointer 不允许。能存储地址的是指针,也叫指针变量。
于是,函数中的形参char array[] 就可以计算了:array = pointer


在所有运算符中,下面四个运算符的优先级最高:结构运算符.->,用户函数调用的()以及用于下表的[]比如说:++p->len自增的值是len而不是p。:-)
*p->str++自增的是str,而*p++->str自增的是p


自引用实例的结构是非法的:struct str{ struct str s; };自引用指针的结构是合法的:struct str{ struct str *p; };


struct wordtree **node;: 从右往左翻译: node 是一个指针,这个指针保存的是指针的地址,这个被保存地址的指针指向的是struct wordtree类型的结构体变量。同样的翻译规则可以用来翻译const类型变量。:-)


因为传递到函数参数中的数组其实是一个地址,那么传递到函数参数中的指针数组其实是一个指向指针的指针: char *str[] 披着指针数组的皮实质上是: char **str


int printf (char *format, arg1, arg2, ...);arg1...参数按照format的要求进行转换和格式化。这里参数的存储是一个限制条件,format是一个限制条件。
可以把format理解为管道:-)
所以printf称为格式化输出:-)


使用地址的最根本原因就是要改变对应存储空间的值。


#define getc(p) (--(p)->cnt >= 0 ? (unsigned char) *(p)->ptr++ : _fillbuf(p))


getc(FILE *p) 宏从文件流中读取一个字符。


if((f->flag & (_WRITE|_EOF|_ERR)) != _WRITE) return EOF;意思是希望flag没有_EOF属性,也没有_ERR属性,只有_WRITE属性。


系统调用readwrite分别将文件中的数据读入缓冲区,将缓冲区的数据写入文件。


Python中的range特性真的是很好,比如说range(0,5)代表了0,1,2,3,4这5个元素,就如同for(i=0;i<5;i++)。《c陷阱与缺陷》中有讲为什么要用i<5而不用i<=4,我记得其中一个原因就是<5中的5很直观,一看就是有5个元素,用<正好,用<=4还得在心里默默数:4+1=5共5个数

0 0