【C和指针】6.指针

1.指针变量的内容

int a=112, b=-1;
float c=3.14;
int *d=&a;
int *e=&c;

(1) 变量d和e被声明为指针,并用其他变量的地址予以初始化; 

(2) 指针变量d和e的初始化用&操作符完成,该操作符用于产生操作数的内存地址;

2.间接访问操作符或解引用指针*

(1) 对指针进行解引用操作可以获得它所指向的值;

*d=112
*e=3.14

3.未初始化和非法的指针

int *a;
...
*a=12;

(1) 上述代码中声明了一个指针变量a,然后把12存储到a所指向的内存位置;

(2) 但是,上述代码是错误的; 因为声明了指针变量a后,从未对a进行初始化,所以a指向哪里不确定,也就没办法预测12这个值将存储于什么地方;

4.NULL指针

(1) NULL指针,作为一个特殊的指针变量,表示不指向任何东西;要使一个指针变量为NULL,可以给它赋一个零值; 为了测试一个指针变量是否为NULL,可以将其与0进行比较;

(2) 对NULL指针进行解引用操作是非法的; 在对指针进行解引用操作之前,首先必须确保它并非NULL指针;

5.指针,间接访问,左值

int a;
int *d=&a;

*d=10-*d; //正确
d=10-*d;   //错误

(1) *d=10-*d中,d所指向的位置a把赋值符右侧的表达式的计算结果作为它的新值;

(2) d=10-*d,非法,把一个整型数量10-*d存储于一个指针变量中;

6.指针,间接访问,变量

*&a=25;

(1) &a产生变量a的地址,*&a取变量a的地址所存储的数值,所以*&a=25等价于a=25;

7.指针的指针

int a=12;
int *b=&a;
int **c=&b;

表达式                等价的表达式
a                       12
b                       &a
*b                     12,a
c                        &b
*c                      b, &a
**c                    *b,12,a

 

posted on 2022-08-22 19:30  _见贤_思齐  阅读(43)  评论(0编辑  收藏  举报

导航