1.指针变量
指针变量是存其他变量地址的变量,也叫该指针变量指向某某变量,如这里的mypoint指向i
变量的指针,就是变量的地址,变量mypoint中保存着变量i的地址,因此变量mypoint就是指向变量i的指针变量
指针变量在定义时,会在定义的语句中引入一个“*”,表示“这是一个指针变量”
int * a1;定义一个指针变量,这个指针变量指向整型变量,指针变量前面有个*,这个是和普通变量最明显的区别
2.举例说明
现在要让一个指针变量指向一个整型变量,用赋值语句可以到
a1 = &i;
注意:定义指针变量时,前面有*,但是使用指针变量时,前面没有*,所以指针变量名是a1,而不是*a1
int * a1 = & i;这属于定义时候初始化,现在a1指向i
等价于
int * a1;
a1 = &i;
*这个指针运算符不用于定义变量指针的场合时,代表的是它所指向的变量
比如上面的
i = 10;
int * a1 = & i;
printf(“%d”, * a1); // 10 ,*a1代表i
3.其他形式
再提一嘴
(*a1)++等同于i++
*a1++等同于*(a1++)
a1++是什么意思呢,我们知道a1就是存的i的地址,那让i的地址++,而由于i是个整型,所以a1++相当于a1要跳过4字节,所以a1不再指向i了,而是指向i后面的内存
那*(a1++) = 5是什么意思,首先这是将a1所指向的内容赋值为5(因为++是先用后加,所以此时相当于是*a1 = 5),因为a1开始指向i变量,所以是让i变量的值为5;其次让a1自加1,也就是a1++,导致a1指向i后面的地址,如果i的起始地址是1000,那a1指向的地址现在为1004
指针变量做参数,可以间接在函数汇总改变指针变量所指向的变量的值,从而达到在被调用函数内改变外界变量值的效果