万恶的指针(一)
I.变量,内存单元与地址
(一)地址与指针
地址相当于酒店的房间号,而酒店就是存储器。
指针:用来访问内存和操纵地址的工具。是用来存放地址的变量
scanf("%d",&n)&n表示变量n的内存地址或存储位置。这里的&称为地址运算符,&市一元运算符,与其他的一元运算符有同样的优先级和从右到左的结合性
II.指针变量的定义
#include<stdio.h>
int main(void)
{
int a=3,*p;
p=&a;//把a的地址符给指针p,即p指向a
printf("a=%d,*p=%d\n",a,*p);
*p=10;
printf("Enter a:");
scanf("%d",&a);
printf("a=%d,*p=%d\n",a,*p);
(*p);
printf("a=%d,*p=%d\n",a,*p);
return 0;
}
先去*p的值作为表达式的值,再将指针p的值加1,运算后,p不再指向变量a
IV.指针变量的初始化
1.指针变量在定义后也要先赋值再引用,定义指针变量时可以同时对它赋初值。
如: int a;
int *p1=&a;
int p2=p1;
这时p1和p2都指向变量a
2指针不能赋数值但能赋0
0在ASCII字符中表示NULL