什么是指针
变量的值存储于计算机的内存中,每一个变量都有一个特定的位置,
每一个内存位置都有由一个唯一的地址并引用.,就像一条街道上房子由它们的门牌号码来标识一样。
指针只是地址的一个名字,指针变量是一个其值为另一个(一些)内存地址的变量
指针与字符串常量
当字符串常量出现在一个表达式中时,表达式所使用的值是这些字各符所存储的地址,而不是这些字符本身
把字符串常量赋值给“指向字符的指针",后者指向这些字符串所存储的地址
指针定义
int *p
p是一个普通的指向整形的指针
int const *p
一个指向整形常量的指针,你可以改变指针的值,但你不能修改它所指 向的值
int * const p;
一个指向整形的指针常量,此时指针是常量,它的值无法修改,但你可 以修改它指向的整形的值
int const * const p
无论指针本身还是它所指向的值是常量,不能修改
NULL
指针的指针它是一个特殊的指针变量,表示某个特定的指针目前未指向任何东西
#include <stdio.h> #include <stdlib.h> void main(){ int a =20; int *p1; int *p2; p1=NULL; p2=&a; if(p2!=NULL){ printf("a=%d",*p2); //结果 20 } }
#include <stdio.h> void main(){ int a=100; int *b ; int **c; b=&a; c=&b; printf("%d",**c); //100 printf("%d",*b);//100 }
内存模型
访问符