记一些琐碎的东西

1) #define setzero(a,n) a&=~(1<<n) 宏定义将n位制零

#define setone a|=(1<<n) 宏定义把n位制1


2) #define isset(a,n) (a)&(1<<(n)) 判断n位是不是1


3) int 型交换变量(注意a与b不能有相等的情况)

a=a^b;

b=a^b;

a=a^b;


4 )刷新缓冲区#include<string,h>

while(fflush(stdin),memset(s,0,sizeof(s)),scanf("%d",&a));

当输入从无数据时造成死循环,因为错误数据一直在缓冲区


5)结构体定义的时候用.来指内部变量,结构体定义指针用->来指内部变量


6) string to int    ::::sum=sum*10+str[i]-'0';


7) char *p 只想地址是只读的

strcpy(p,"world")这是错的

char str[] 这个是可写的

b[5]=*(b+5) = *(5+b)=5[b] 这都是一样的


8) int *p=NULL ; *p是地址p上的一个int型的值=0,p的地址有cpu分配

*p=1 不对,*p=a,对


9) arr=(int *)calloc(10,sizeof(arr)); 相当于 arr(int *)malloc(10*sizeof(arr)); memset(arr,0,sizeof(arr));


10) 定义指针后都是只读的,因为地址的内容是受系统保护的,想要将自己定义的指针所指向的内容赋值

必须自己开辟地址空间arr=(int *)calloc(10,sizeof(arr));


11) stdin是file*类型的,文件指针,默认从键盘读入?????????????

FILE *fp fp是指file类型的文件头指针

#define FILE_READ  "D:\The_Holy_Bible.txt"定义路径

fp=fopen(FILE_READ(文件名),"wb" 或 “rb”(使用文件的打开方式)) 指明路径,读文件的时候就可以用fscanf(fp,"%d%s%d");

fclose()

char ch = fgetc();从文件得到一个字符

标准输入流是stdin 

fscanf(fp,"%d%s%d");

fscanf(stdin,"%d%s%d");=scanf("%d%s%d");

fprintf(stdout,"%d%s%d");=printf("%d%s%d");


12)char line[1024]; 

while(memset(line,0,sizeof),fgets(line,1024,fp)!=NULL) 将fp所指向的文件整行考入line中

int srone_cnt = sscanf(line,"%d%d%d%d%d",&id,&,&,&);将line中的数俺格式取出,srone_cnt放取了几个%d,用于判断每一行int的个数不确定的情况

fprintf(fp,"%d%d",id,n); 将数据按照这个格式放入fp所致的文件

fread 整块读,用fwrite整块写,必须的用fread进行读


13) 建立二维动态数组,之中size自己定义大小,所以是动态数组,假如int n; int a[n],这就不对

int **arr;

arr=(int **) calloc (size,sizeof(int *));

for(index=0;index<size;index++){

arr[index]=(int *)calloc(1,sizeof(int));
}

释放二维动态数组,就释放头指针?

for(index=0;index<size;index++){

free(arr[index]);

arr[index]=NULL;

}

free(arr);

14)int *p=NULL ;*p=1;(错) *p=a(对)

当指针指向空是,不能更改该地址所对应的空间的值,受系统保护的, 可以让p指向一个变量的地址

你可能感兴趣的:(记一些琐碎的东西)