终于要上到指针了,好好先做预习,之前看的都忘了,今天正式给指针做笔记,以后学到到的都在这里补充
int *p, *q , a;
上面定义一个指向整型变量的指针p和指针q,a为整型变量,*号为类型标识符,表明p,q为指向整型变量的指针变量
正确的赋值方式:
scanf("%d",p) p是指针存放的就是地址,本身的值就是地址,所以不用加&
p=q 两个指针之间的赋值,使指针p指向q所指向的内存单元
*p=q 这个不怎么用,也是正确的,把q的值赋给p指向的整型变量
a=*p *p时取p指向的地址的内容是整型的,它给整型变量a是正确的
p=&a 取a的地址,p是指针接收的就是地址,类型相同可以赋值
*p=a a是整型变量,*p表示指针p所指向的内容也是整型的,类型相同可以赋值
*p= *q 将指针q指向的变量的值赋给指针p所值的变量值,在用于两个数互换时可以用到
p=NULL p='\0' p=0 都是将指针赋初值
错误的赋值方式:
p=a 整型数据不应该赋给指针,指针只能接收地址
*p=&a 不能把a的地址赋给一个被p所指的整型变量(*p代表它所指内存的变量),类型不符合
*p=*a 莫名其妙给整型变量加上指针运算符是错误的
printf("%d",p) %d表示整型数据,而p却是地址值,类型不符合