- 从根本上看,指针(pointer)是一个值为内存地址的变量
地址运算符:&
后跟一个变量名时,&给出该变量的地址。
&nurse //表示变量nurse的地址。
地址运算符:*
后跟一个指针名或地址时,*给出储存在指针指向地址上的值。
val = *ptr; // 把ptr指向的地址上的值赋给val
声明指针
声明指针变量时必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间;另外,程序必须知道储存在指定地址上的数据类型。
int * pi; // pi是指向int类型变量的指针
char * pc; // pc是指向char类型变量的指针
float * pf, * pg; // pf、pg都是指向float类型变量的指针
类型说明符表明了指针所指向对象的类型,星号(*)表明声明的变量是一个指针。
第一句的意思是pi是一个指针,*pi是int类型。
pc指向的值(*pc)是char类型。pc本身是什么类型?我们描述它的类型是“指向char类型的指针”。

使用指针在函数间通信
#include <stdio.h>
void interchange(int * u, int * v);
int main(void)
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d.\n", x, y);
interchange(&x, &y); // 把地址发送给函数
printf("Now x = %d and y = %d.\n", x, y);
return 0;
}
void interchange(int * u, int * v)
//通过修改地址上的值来交换变量的值
{
int temp;
temp = *u; // temp获得 u 所指向对象的值
*u = *v;
*v = temp;
}
-
变量:名称、地址和值
编写程序时,可以认为变量有两个属性:名称和值。 计算机编译和加载程序后,认为变量也有两个属性:地址和值。地址就是变量在计算机内部的名称。 -
普通变量把值作为基本量,把地址作为通过&运算符获得的派生量;而指针变量把地址作为基本量,把值作为通过*运算符获得的派生量。
本文介绍了指针的概念,包括指针如何存储内存地址以及如何通过*和&运算符获取和设置值。示例展示了如何声明不同类型的指针,并用指针在函数间交换变量值。指针将地址作为基本量,值作为派生量,使得直接操作内存成为可能。
2816

被折叠的 条评论
为什么被折叠?



