1.间接访问操作符*
int *d=&a;d与*d的区别:
d为一个指针,指向a的存储地址 。*d为d指向地址中的值(即a的值)。
//#include<stdio.h>
#include<iostream>
using namespace std;
int a=100;
int *d=&a; //d为一个指针,指向a的存储地址 。*d为d指向地址中的值。
int main()
{
// printf("a的地址为%d\n",&a);
// printf("d=%d\n",d);
// printf("*d=%d",*d);//*e的值为c;
cout<<"a的地址为"<<&a<<endl;
cout<<"a的值为"<<a<<endl;
cout<<"d="<<d<<endl;
cout<<"*d="<<*d<<endl;
}
//int *d=&a;
//与 int *d;d=&a;含义相同
输出结果:
2.未初始化的指针
int *a; //声明创建了一个名叫a的指针变量
*a=12; //将12赋值于a所指向的内存地址
错误:我们未对a进行初始化,不知道a所指向哪里。若执行此程序,第一种可能:若a的初始值是一个非法地址,则出错,程序终止。第二种可能:这个指针可能包含一个合法地址,执行程序,则那个位置的值被修改,此类错误难以捕捉。