可以把指针理解为一种新数据类型,下面从七个方面来说明这种”带*类型”的新数据类型特征
1、宽度
1)新类型变量宽度永远是4字节,无论类型是什么,无论有几个*
2、声明
例子
1)char* x; char类型加*的构成一个新类型
2)short* y; short类型加*的构成一个新类型
3)student* st; 结构体类型加*的构成一个新类型
4)char*** x; char类型加***的构成一个新类型
总结
1)新数据类型的标准写法,变量类型* 变量名
2)任何类型都可以带*构成是一种新的数据类型
3)*可以是任意多个
3、赋值
例子
1)整型赋值
int x;
x=(int)10; 完整写法
x=10; 简化写法
2)带*类型赋值
char* x;
short* y;
int* z;
char******* h;
x = (char*)1;
y = (short*)2;
z = (int *)3;
h = (char*******)4;
总结
1)带*类型的变量赋值时只能使用”完整写法”
4、加加 减减
例子
1)
char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a++;
b++;
c++;
//101 102 104
printf("%d %d %d", a, b, c);
2)
char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a++;
b++;
c++;
//104 104 104
printf("%d %d %d", a, b, c);
总结
1)带*类型的变量可以加加 或减减
2)带*类型的变量做加加 或减减时,
新数据类型变量加加 = 新数据类型变量 + (去掉一个*后类型的宽度)
新数据类型变量减减= 新数据类型变量 - (去掉一个*后类型的宽度)
5、加上/减去 一个整数
例子
1)
char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a = a + 5;
b = b + 5;
c = c + 5;
//105 110 120
printf("%d %d %d", a, b, c);
2)
char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a = a + 5;
b = b + 5;
c = c + 5;
//120 120 120
printf("%d %d %d", a, b, c);
3)
char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a = a - 5;
b = b - 5;
c = c - 5;
//95 90 80
printf("%d %d %d", a, b, c);
4)
char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a = a - 5;
b = b - 5;
c = c - 5;
//80 80 80
printf("%d %d %d", a, b, c);
总结
1)带*类型的变量可以加、减一个整数,但是不能乘或除
2)带*类型的变量与其他整数相加或相减时,
新数据类型变量 + N = 新数据类型变量 + N乘以去掉一个*后类型的宽度
新数据类型变量 - N = 新数据类型变量 - N乘以去掉一个*后类型的宽度
6、求差值
例子
1)
char* a;
char* b;
a = (char*) 100;
b = (char*) 200;
int x = b - a;
//x = 100;
printf("%d\n", x);
2)
char** a;
char** b;
a = (char**) 100;
b = (char**) 200;
int x = b - a;
//x = 25;
printf("%d\n", x);
总结
1)两个类型完全相同的带*类型的变量可以进行减法操作
2)相减的结果要除以去掉一个*的数据的宽度
7、比较
例子
1)
char*** a;
char*** b;
a = (char***)200;
b = (char***)100;
if(a>b)
{
printf("1");//打印这里
}
else
{
printf("2");
}
总结
1)带*的变量,如果类型完全相同,可以做大小的比较