C的学习笔记

1,int,long int 分配的都是4个字节;float,4 ;double,8;long double,16个字节。

      像3.1415926默认是double型数据;

2,! > 算术运算符(+,-,*,/) > 关系运算符(<,>,<=,>=,==,!=) > &&和|| > 赋值运算符(=)。

3,用到true时,需引入stdbool.h头文件。

#include 
#include 
int main(){	
	_Bool a;
	a = 10>=0;
	if(a == true)
	printf("%d",a);   
}

4,数组名代表数组的首元素的地址。

char c[] = {"china"};
	
printf("%s",c);
5,函数的声明的作用,是把函数的名字,类型,形参的类型,个数,顺序,告知编译系统,以便在函数调用时,系统按此进行对照检查。

6,指针与数组

	int a = 11;
	int *p;
	
	p = &a;//把a的地址 赋值给p 
	printf("%d\n%d\n",a,p);

	int n[] = {1,2,3};
	printf("%d\n%d\n%d\n%d\n",&n[0],n,*n,*&n[0]);
7,指针变量作实参,必须使指针变量有确定值。

8,选择排序算法。

	void sort(int x[], int n){
		int i,j,k,t;
		for(i = 0; i< n-1; i++){
			k = i;
			for(j = i+1; j < n; j++){
				if(x[j] > x[k]){//由大到小排序 
					k = j;
				}
			}
			if(k != i){
				t = x[i];
				x[i] = x[k];
				x[k] = t;
			}
		}
	}

9,指向由m个元素组成的一维数组的指针变量

实例1:

	int m[4][3] = {{11,22,33},{332,444,55},{66,77,88},{00,99,88}};
	int (*s)[2];
	s = m;
	printf("%d\n%d\n",*(*(s+1)+1),(*s)[2]); //444 , 33

	int m[4][3] = {{11,22,33},{332,44,55},{66,77,88},{00,99,88}};
	int (*s)[2];
	s = m;
	printf("%d\n%d\n",*(*(s+1)+1),(*s)[2]);//332,33

                [Warning] assignment from incompatible pointer type

10,字符串与指针

	char a[] = "Ilikeyou!";
	char *str ;
	str = a;
	printf("%c\n%c\n%c\n%c\n",str[3],a[3],*(a+3),*(str+3));

11,指针与函数

  用指向函数的指针,作为参数,传递到其他函数中

int (*p)(int , int)

12,一些定义;

	int *P;//指针变量 
	int (*p)[4];//行指针 
	int (*p)(int, int){};//指向函数的指针 
	int *p(){};//返回指针指的函数 
	int *p[4];//指针数组 
	int **p;//多重指针 
	void *p;//p 是一个指针变量,基类型为void(空类型),不指向具体的对象

13,一些研究例子;

	char *s[] = {"111","sdmn"};
	char *c ;
	char str[] = "klkl";
	c = str;
	printf("%s\n%c\n%c\n%c\n",s[1],*(str+1),*(s[1]+2),*s[1]);
	char **p;
	p = s + 1;
	printf("%d\n%d\n%s\n",s[0],*p,*p);

14,int *(*(*p)[10])(void);  //   t = (*p)[10]  k = *t

	enum Week{
		sun,mon,sta
	}a;
	enum Week b;
	a = mon;
	b= sta;
	printf("%d",b);

	union Data{
		int i;
		char ch;
		float f;
	}a,b;
	union Data c;
	
	
	a.i = 97;
	a.ch = 8;
	a.f = 90;
	
	c.i = 89;
	
	printf("%f",a.f);


struct Stu{
	int num;
	char name[20];
}a={10101,"lilin"};


struct Stu b = {10102,"lloyd"};
struct Stu c = {.name = "chou",.num = 10103};

printf("%d\n%s", c.num,c.name);


15,文件

	FILE *p;
	p = fopen("file.dat","w");
	char ch;
	ch = getchar();
	while(ch != '#'){
		fputc(ch,p);
		putchar(ch);
		ch = getchar();
	}	
	//fputc('q',p);
	fclose(p);
	//putchar(10);


16,带参数的宏

#include 
#include 
#define SQ(y) ((y)*(y))
int main(int argc, char *argv[]) {

	int i = 1;
	while(i<=5){
		printf("%d\n",SQ(i++));
	}
		
}

	/*int SQ(int y){
		return ((y)*(y));
	}*/








你可能感兴趣的:(C)