天天看点

c语言指针笔记

终于要上到指针了,好好先做预习,之前看的都忘了,今天正式给指针做笔记,以后学到到的都在这里补充

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却是地址值,类型不符合

继续阅读