C++程序设计 湖南大学 杜四春、银红霞 如果在定义指针时,指针初始化为0或者根本没有 初始化。那么在使用此指针前,就必须给它赋有意义 的值。 例如: intn,大p1;//定义指针p1时没有初始化 p1=&n; //给指针p1赋值为int型变量n的地址 或者: intn,*p1=0;//定义指针p1时初始化为0 p1=&n; //给指针p赋值为int型变量n的地址 都是正确的
C++程序设计 湖南大学 杜四春、银红霞 如果在定义指针时,指针初始化为0或者根本没有 初始化。那么在使用此指针前,就必须给它赋有意义 的值。 例如: int n,*p1; //定义指针p1时没有初始化 p1=&n; //给指针p1赋值为int型变量n的地址 或者: int n,*p1=0; //定义指针p1时初始化为0 p1=&n; //给指针p1赋值为int型变量n的地址 都是正确的
C++程序设计 湖南大学 杜四春、银红霞 也可以向一个指针赋初值为另一个指针变量,即 把另一个已经初始化的指针赋予一个指针。这时,这 两个指针指向同一变量的内存地址。如下例所示:例 如: int ni int*p1=&n;//指针p1的值初始化为变量n的地址 int*p2=p1;//指针p2的值初始化为指针变量p1 上面这种写法与下面的写法是等价的: int ni int*p1=&n;//指针p1的值初始化为变量n的地址 int*p2=&n;//指针p2的值初始化为变量n的地址
C++程序设计 湖南大学 杜四春、银红霞 也可以向一个指针赋初值为另一个指针变量,即 把另一个已经初始化的指针赋予一个指针。这时,这 两个指针指向同一变量的内存地址。如下例所示:例 如: int n; int *p1=&n; //指针p1的值初始化为变量n的地址 int *p2=p1; //指针p2的值初始化为指针变量p1 上面这种写法与下面的写法是等价的: int n; int *p1=&n; //指针p1的值初始化为变量n的地址 int *p2=&n; //指针p2的值初始化为变量n的地址
C++程序设计 湖南大学 杜四春、银红霞 也可以定义一个指向数组的指针。由于数组名表 示的是该数组的首地址,所以如果定义一个指针指向 数组,则可如下例声明: 例如: int a[10], *pa=ai 这个语句定义了一个指针pa,并把pa初始化为指 向数组inta[10]的指针,即指针pa指向数组的第一个 元素。这时,不需要使用取地址运算符“&”, 上述声明方式与下面的语句等价: int a[10], pa=&aloi 8a[0]表示数组a中第一个元素所在的内存地址 值
C++程序设计 湖南大学 杜四春、银红霞 也可以定义一个指向数组的指针。由于数组名表 示的是该数组的首地址,所以如果定义一个指针指向 数组,则可如下例声明: 例如: int a[10],*pa=a; 这个语句定义了一个指针pa,并把pa初始化为指 向数组int a[10]的指针,即指针pa指向数组的第一个 元素。这时,不需要使用取地址运算符“&” 。 上述声明方式与下面的语句等价: int a[10],*pa=&a[0]; “&a[0]”表示数组a中第一个元素所在的内存地址 值
C++程序设计 湖南大学 杜四春、银红霞 如果说明了一个指针,并使其值为某个变量的地 址,则可以通过这个指针间接地访问在这个地址中存 储的值 利用指针来访问变量值需要使用间接访问运算符 水” 例如: int a=l, pa=&ai cout<<rpai 用cout语句输出的是变量a的值1,即“*a”就是 代表变量a。上面的“cout<<*pa;”语句与 “cout<<a;”语句的作用相同
C++程序设计 湖南大学 杜四春、银红霞 如果说明了一个指针,并使其值为某个变量的地 址,则可以通过这个指针间接地访问在这个地址中存 储的值。 利用指针来访问变量值需要使用间接访问运算符 “*” 。 例如: int a=1,*pa=&a; cout<<*pa; 用cout语句输出的是变量a的值1,即“*pa”就是 代表变量a。上面的“cout<<*pa;”语句与 “cout<<a;”语句的作用相同
C++程序设计 湖南大学 杜四春、银红霞 同样,在利用指针访问变量的值时,也可以通过 指针给变量间接赋值 例如: int a=l a=∝a a=2; cout<<a 用cout语句输出的是变量a的值2,而不是1
C++程序设计 湖南大学 杜四春、银红霞 同样,在利用指针访问变量的值时,也可以通过 指针给变量间接赋值。 例如: int a=1,*pa=&a; *pa=2; cout<<a; 用cout语句输出的是变量a的值2,而不是1