很多人都在说指针都是地址,我不是这样理解的,最好不要一提到指针就想到地址,这样的话很难学好指针。
我们都知道常用的数据类型:char short int
我们可以先把指针理解为带(* )的类型,我们平常学的数据类型后面都可以加一个变成带(*) 的数据类型
比如
char *, short *, int *
任何我们学过的类型,都可以加上一个( * )或者多个( *),就会变成一个新的类型。
1.“带*类型” 的特征探测:声明
如何声明一个char/short/int类型的变量?
声明带有(*)特征的变量:
声明带有许多(*)特征的变量
我们可以把它理解为带( * )类型的变量,就相当于一个新的类型。
总结:
1、带有*的变量类型的标准写法:变量类型( * )变量名
2、任何类型都可以带* ,加上*以后就是新的类型
3、*可以是任意多个
2、“带*类型” 的特征探测:赋值
平常常用的数据类型赋值我们都是这样的
int i=10;
其实这样并不是完整的写法,这只是精简的写法,真正的写法应该是int i=(int)10;
char、short、int 类型变量的赋值:
带*类型的变量的赋值:
探测数据的宽度:
我们发现 char 占一个字节
short占两个字节
int 占四个字节
我们发现 char * 占4个字节
short * 占4个字节
int * 占4个字节
总结,不管你原来是什么类型,只要你加上1个* 就变成一个新的类型,而且数据宽度都是4字节
我们发现不管你加多少个* 它占的数据宽度都是4个字节
总结:
1、带( * )类型的变量赋值时只能使用“完整写法”.
2、带( * )类型的变量宽度永远是4字节、无论类型是什么,无论有几个( *. )
3、“带*类型” 的特征探测:++ - -
char、short、int类型:
发现最后打印出来的a,b,c都是101.
带*类型:
发现最后打印的a,b,c分别为101,102,104
发现最后上面打印的a,b,c都是104.
总结:当带( * )号的这种变量,带上++或者–这种运算的时候,它到底是加几还是减几?
这里有一个公式,它到底是加几还是减几,你去掉一个( * )的数据宽度就是它要加几还是减几。
1、不带*类型的变量,++或者-- 都是假1 或者减1
2、带*类型的变量,可是进行++ 或者 --的操作
3、带类型的变量,++ 或者 – 新增(减少)的数量是去掉一个后变量的宽度
4、“带*类型” 的特征探测:加上/减去 一个整数
总结:
1、带( * )类型的变量可以加、减一个整数,但不能乘或者除.
2、带( * )类型变量与其他整数相加或者相减时:
带( * )类型变量 + N = 带( * )类型变量 + N*(去掉一个*后类型的宽度)
带( * )类型变量 - N = 带( * )类型变量 - N*(去掉一个*后类型的宽度)
5、“带*类型” 的特征探测:求差值
总结:
1、两个类型相同的带( * )类型的变量可以进行减法操作.
2、想减的结果要除以去掉一个( * )的数据的宽度.
6、“带*类型” 的特征探测:比较
带( * )的变量,如果类型相同,可以做大小的比较。
总结:
带*的变量,如果类型相同,可以做大小的比较。