指针一


语法:
int *x;
int* x;

推荐使用
char* x;    
    
short* y;    
    
int* z;    
    
float* f;    
    
double* d;    
    
Student* st;    
    
总结:                
1、带有*的变量类型的标准写法:变量类型* 变量名                
2、任何类型都可以带* 加上*以后是新的类型                
3、*可以是任意多个                


赋值:                
1、带*类型的变量赋值时只能使用“完整写法”.                        
2、带*类型的变量宽度永远是4字节、无论类型是什么,无论有几个*.                        

void Function()            
{            
    char* x;        
    short* y;        
    int* z;        
            
    x = (char*)1;        
    y = (short*)2;        
    z = (int*)3;        
            
}            
++ --


    
char**** a ;        
short**** b ;        
int**** c ;        
        
a = (char****)100;        
b = (short****)100;        
c = (int****)100;        
        
a++;        // 104
b++;        //104
c++;        //104
        
printf("%d %d %d",a,b,c);        


    

                
1、不带*类型的变量,++或者--  都是假1 或者减1                            
                            
2、带*类型的变量,可是进行++ 或者 --的操作                            
                            
3、带*类型的变量,++ 或者 -- 新增(减少)的数量是去掉一个*后变量的宽度

加减法

                            
char* a ;        
short* b ;        
int* c ;        
        
a = (char*)100;        
b = (short*)100;        
c = (int*)100;        
        
a = a + 5;        //100 + 5*1
b = b + 5;        //100 + 5 * 2
c = c + 5;        //100 +5*4
        
printf("%d %d %d",a,b,c);    


1、带*类型的变量可以加、减一个整数,但不能乘或者除.                            
                            
2、带*类型变量与其他整数相加或者相减时:                            
                            
    带*类型变量 + N  =  带*类型变量 + N*(去掉一个*后类型的宽度)                        
    带*类型变量 - N  =  带*类型变量 - N*(去掉一个*后类型的宽度)        


求差值
    列子1:
    Student* s1; //8            
    Student* s2; //8            
    int x;            
    
    s1 = (Student*)300;        //200 -     
    
    s2 = (Student*)100;            
    
    x = s1-s2;        //x的值是多少? //计算方法为 300 - 100 = 200 % 8 = 25
    printf("%d",x);



    
列子2:
    Student* s1; //8            
    Student* s2; //8            
    int x;            
    
    s1 = (Student*)200;            
    
    s2 = (Student*)100;            
    
    x = s1-s2;        //x的值是多少? //计算方法为 200 - 100 = 100 % 8 = 12.5 取12
    printf("%d",x);
                    
1、两个类型相同的带*类型的变量可以进行减法操作.                                        
2、想减的结果要除以去掉一个*的数据的宽度.                    

比较:

带*的变量,如果类型相同,可以做大小的比较。

                

    
    







发表评论 / Comment

用心评论~