1:整型都分为singed和unsigned两种版本
长整型至少跟整型一样长,整型至少应该和短整型一样长。
2:枚举
enum Jar_Type {CUP,PINT...};
3:注意检查数组下标值
4:const关键字
int const a;
const int a;
都把a声明为不能修改值的整数
int const *pi;
指向整型常量的指针,可以修改指针值但是不能修改指向的值。
int *const pi;
指向整型的常量指针,指针不可以改变,但是可以修改它指向的整型的值。
int const * const ccpi;
指针和值都不能修改。
5:static关键字:
(1)用于函数定义或者代码块外的便利声明,用于修改标示符的链接属性。函数或变量只能在它们的源文件中使用
(2)当用于代码块外部的变量声明的时候,用于修改变量的存储类型,从自动变量修改为静态变量。变量在程序执行之前创建,并且在程序的整个执行期内一直存在。
6:定义类型的新名字的时候使用typedef而不是#define
7:移位操作
在c语言中不存在无符号右移和左移
左移都是用0填充右边位数。而右移的时候有两种:逻辑移位用0填充,算术移位用1填充
8:确保指针初始化
9:NULL指针
10:
清除一个数组内容
float values[N_VALUES];
float *vp;
for(vp=&values[0],vp<&values[N_VALUES];)
*vp++=0;
11:数组和指针
array[n]
*(array+n)
12:如果使用正确,下标绝不会比指针更有效率,但指针有时比下标更有效率
13:
void strcpy(char *buffer,char const *string)
{
while((*buffer++=*string++)!='\0')
}
14:二维数组
int matrix[3][10]
matrix+1指向包含10个整型元素的数组的指针。
*(matrix+1)指向常量的指针
*(*(matrix+1)+5)相当于matrix[1][5]
15:字符串
复制字符串char * strcpy(char *dst,char const *src);
字符串连接:char *strcat(char *dst,char const *src)
char *strncpy(char *dst,char const *src,size_t len)
如果src长度大于len,只有len个字符复制到dst中,注意,它的结果不会以NUL字节结尾。
查找字符:char * strchr(char const *str,int ch);返回指向该位置的指针
查找任何几个字符:char *strpbrk(char *str,char const *group)
查找子串:char *strstr(char const *s1,char const *s2);
查找字符串前缀:size_t strspn(char const *str,char const * group);
返回str起始部分匹配group中任意字符的个数。
size_t strcspn(char const *str,char const * group)
起始部分不与group任何字符匹配的字符数
strtok(char * str,char const *sep);
void print_tockens(char *line)
{
static char whitespace[]="\t\f\r\v\n";
char *token;
for(token=strtok(line,whitespace);token!=NULL;token=strtok(NULL,whitespace))
printf("next token is %s",token);
}
内存操作:
memcpy()
memmove()
memchr()
memset()
16:结构声明
typedef struct {
....
}Simple;
Simple x;
17:内存分配
int *pi;
pi=malloc(25*sizeof(int))
经典格式:
#define MALLLOC(num,type) (type *)alloc((num)*sizeof(type));
int *new_memory;
new_memory=MALLOC(25,int);
18:高级指针
int * f():一个函数,返回值类型是一个指向整型的指针。
int (*f)():f是一个函数指针,它指向的函数返回一个整型
int *(*f)():f是一个函数指针,它指向的函数返回一个指向整型的指针
int *f[]:f是一个数组,它的元素类型是指向整型的指针
int (*f[])():*f[]得到f是某种元素的指针的数组。所以f是一个数组,数组元素的类型是函数指针,函数的返回值是整型值。