指针01

1.带星号“*”的类型
任何一种数据类型的变量前面加上一个或多个*,将变成带*的类型;
例如:int* x;
 
2.声明方式
推荐的方式:可以清晰的看到是一个带星号的变量
char* x;        
short* y;        
int* z;        
float* f;        
double* d;        
Student* st;
不推荐的方式:不报错,但看起来不直观
char *x;    
short *y;    
int *z;    
float *f;    
double *d;    
Student *st;
也可以一个或多个星号
char** x;    
short*** y;    
int** z;    
float** f;    
double***** d;    
Student****** st;
总结:
    1、带有*的变量类型的标准写法:变量类型* 变量名                                        
    2、任何类型都可以带* 加上*以后是新的类型                                        
    3、*可以是任意多个
 
3.赋值和宽度
char、short、int 类型变量的赋值:
带*类型的变量的赋值:只能用完整写法
数据宽度:
代码:    
void fun()    
{   
    char* x = (char*)5;
}
 
int main(int argc, char* argv[])
{    
    fun();
    getchar();
    return 0;
}
反汇编:
    
 
总结:                                                
    1、带*类型的变量赋值时只能使用“完整写法”.                                                
    2、带*类型的变量宽度永远是4字节、无论类型是什么,无论有几个*.
 
4.++和--操作
以short*类型的++为例:
    ++后增加了去掉一个*后变量short的宽度2,结果是20+2=22;
结论:        
    1、不带*类型的变量,++或者--  都是加1 或者减1                                                        
    2、带*类型的变量,可进行++ 或者 --的操作                                                        
    3、带*类型的变量,++ 或者 -- 新增(减少)的数量是去掉一个*后变量的宽度
 
5.与整数加减
带一个星号类型的加法:
带多个星号类型的加法:
总结:                                                        
    1、带*类型的变量可以加、减一个整数,但不能乘或者除.                                                        
    2、带*类型变量与其他整数相加或者相减时:                                                    
        带*类型变量 + N  =  带*类型变量 + N*(去掉一个*后类型的宽度)                                                
        带*类型变量 - N  =  带*类型变量 - N*(去掉一个*后类型的宽度)
 
6.相同类型相减
例如:
减完后的结果是int类型;
总结:                                
    1、两个类型相同的带*类型的变量可以进行减法操作.                                
    2、想减的结果要除以去掉一个*的数据的宽度.                
                    
7.相同类型比较
带*的变量,如果类型相同,可以做大小的比较。
例如:
 
 
 
 
posted @ 2019-09-27 10:21  L丶银甲闪闪  阅读(248)  评论(0编辑  收藏  举报