写点笔记

C语言:
用变量a给出下面的定义:
①一个整型数;
                                                                                                  int a;
②一个指向整型数的指针;
                                                                                    int *a;
③一个指向指针的指针,它指向的指针是指向一个整型数;
                                                    int **a;
④一个有10个整型数的数组;
                                                                                    int a[10];
⑤一个有10个指针的数组,该指针指向一个整型数;
                                                                      int *a[10];
⑥一个指向有10个整形数组的指针;
                                                                      int  (*a)[10];
⑦一个指向函数的指针,该函数有个整型参数并返回一个整型数;
                                                                      int  (*a) (int);   
⑧一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
                                                                      int (*a[10])(int) ;


定义变量或者解析定义的时候,用到的左右法则:
===》int (*a[10])(int);
  首先找到变量名a,先往右看遇到了[ ],说明a是一个数组,[ ]里面是个10,表明数组中有       10个元素:【这个时候应该条件反射问自己,数组里面保存的是什么类型的元素?】
再继续往右看,遇到了),这个时候调转方向往左看!遇到了*,,表明数组里面保存的变量是指针变量!【这个时候又应该问自己,这个指针变量指向的是什么地方?】继续往左看遇到了(,这个时候又要调转方向,往右看!遇到了(),说明指针变量指向的是函数,()里面是int,表明函数的形参只有一个,并且是整型的参数,又调转方向往左看,遇到int,说明函数的返回值是int类型;


int add(int a,int b);
函数的名字;
函数的形参;
函数的返回值;


左右法则:首先找到变量名,然后往右看,每次遇到括号调转方向,直到把定义解析完毕!
===》强调的是:
1、遇到数组的时候,应该问自己:这个数组里面有多少个元素,元素是什么类型的;
2、遇到指针的时候,应该问自己:指针指向的变量是什么类型;
3、遇到函数的时候,应该问自己:函数的形参有没有,有的话有几个,分别是什么类型                         的,函数的返回值又是什么类型的;


左值右值:
int a = 12;
在定义变量的时候就给变量赋值,叫初始化;     int a = 18;
在定义变量之后,再对变量进行操作,比如改变变量的值,叫赋值;      int a;a = 18;


变量的作用范围:
全局变量:作用范围是整个.c文件;
局部变量:作用范围是{}所在的代码块;
当全局变量和局部变量的作用范围有重合的时候呢?
县官不如现管!!!


数据类型的取值范围:
有符号和无符号:
有符号:既可以表示正的,也可以表示负的,最高位只表示正负,不参与存储数据,0表示 正,1表示负;
无符号:只能够表示非负的,最高位参与保存有效数据;


char为例:
signed char:
最大的:正的!==》0111 1111 = 127
最小的:负的!==》1111 1111 = -127
存在的问题:0000 0000 = +0 和 1000 0000 = -0
印度:-128; [-128,127]
unsigned char:
最大的:1111 1111
最小的:0000 0000


原码、反码和补码:
数据在计算机里面保存的时候,都是以补码的方式保存的!


正数:原码反码补码都是一样的;
负数:负数的补码是负数的绝对值按位取反再加一;
-1的补码计算:
-1的绝对值:0000 0001==》1111 1110==》11111111
运算符:
+、-、*、/、%、i++、++i
i++:先使用再加一;
++i:先加一再使用;


scanf("控制格式",地址);
作用:从终端(键盘)获取输入的数据,按照“控制格式”保存到“地址”,所对应的空间里面;
scanf("%d",*&a);
scanf("%d",&a[0]);C语言:
用变量a给出下面的定义:
①一个整型数;
                                                                                                  int a;
②一个指向整型数的指针;
                                                                                    int *a;
③一个指向指针的指针,它指向的指针是指向一个整型数;
                                                    int **a;
④一个有10个整型数的数组;
                                                                                    int a[10];
⑤一个有10个指针的数组,该指针指向一个整型数;
                                                                      int *a[10];
⑥一个指向有10个整形数组的指针;
                                                                      int  (*a)[10];
⑦一个指向函数的指针,该函数有个整型参数并返回一个整型数;
                                                                      int  (*a) (int);   
⑧一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
                                                                      int (*a[10])(int) ;


定义变量或者解析定义的时候,用到的左右法则:
===》int (*a[10])(int);
  首先找到变量名a,先往右看遇到了[ ],说明a是一个数组,[ ]里面是个10,表明数组中有       10个元素:【这个时候应该条件反射问自己,数组里面保存的是什么类型的元素?】
再继续往右看,遇到了),这个时候调转方向往左看!遇到了*,,表明数组里面保存的变量是指针变量!【这个时候又应该问自己,这个指针变量指向的是什么地方?】继续往左看遇到了(,这个时候又要调转方向,往右看!遇到了(),说明指针变量指向的是函数,()里面是int,表明函数的形参只有一个,并且是整型的参数,又调转方向往左看,遇到int,说明函数的返回值是int类型;


int add(int a,int b);
函数的名字;
函数的形参;
函数的返回值;


左右法则:首先找到变量名,然后往右看,每次遇到括号调转方向,直到把定义解析完毕!
===》强调的是:
1、遇到数组的时候,应该问自己:这个数组里面有多少个元素,元素是什么类型的;
2、遇到指针的时候,应该问自己:指针指向的变量是什么类型;
3、遇到函数的时候,应该问自己:函数的形参有没有,有的话有几个,分别是什么类型                         的,函数的返回值又是什么类型的;


左值右值:
int a = 12;
在定义变量的时候就给变量赋值,叫初始化;     int a = 18;
在定义变量之后,再对变量进行操作,比如改变变量的值,叫赋值;      int a;a = 18;


变量的作用范围:
全局变量:作用范围是整个.c文件;
局部变量:作用范围是{}所在的代码块;
当全局变量和局部变量的作用范围有重合的时候呢?
县官不如现管!!!


数据类型的取值范围:
有符号和无符号:
有符号:既可以表示正的,也可以表示负的,最高位只表示正负,不参与存储数据,0表示 正,1表示负;
无符号:只能够表示非负的,最高位参与保存有效数据;


char为例:
signed char:
最大的:正的!==》0111 1111 = 127
最小的:负的!==》1111 1111 = -127
存在的问题:0000 0000 = +0 和 1000 0000 = -0
印度:-128; [-128,127]
unsigned char:
最大的:1111 1111
最小的:0000 0000


原码、反码和补码:
数据在计算机里面保存的时候,都是以补码的方式保存的!


正数:原码反码补码都是一样的;
负数:负数的补码是负数的绝对值按位取反再加一;
-1的补码计算:
-1的绝对值:0000 0001==》1111 1110==》11111111
运算符:
+、-、*、/、%、i++、++i
i++:先使用再加一;
++i:先加一再使用;


scanf("控制格式",地址);
作用:从终端(键盘)获取输入的数据,按照“控制格式”保存到“地址”,所对应的空间里面;
scanf("%d",*&a);
scanf("%d",&a[0]);

猜你喜欢

转载自blog.csdn.net/weixin_42195913/article/details/80458008