1 指针是C语言中的变量
- 因为是变量,所以用于保存具体值。
- 特殊之处,指针保存的值为内存的地址。
- 何为内存地址?
- 内存是计算机的储存部件,每个存储部件都有固定唯一的编号。
- 内存中存储单元的编号即内存地址。
2 基本事实
程序中一切元素都存储在内存中,因此,可通过内存地址访问程序元素。
3 获取地址
- C语言中通过&操作符获取程序元素的地址。
- &可用于获取变量、数组、函数的起始地址。
- 内存地址的本质是一个无符号整数 (4字节或8字节)
示例代码one:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int var = 0;
printf("var value = %d\n",var); // 打印var的值
printf("var address = %p\n",&var); // 打印var的地址
system("pause");
return 0;
}
tips: 只要通过 内存地址 + 长度 才能确定一个变量中保存的值。
----type-数据类型,决定访问内存时的长度范围。
—*—标志,意味着定义一个指针变量。
_pointer变量名,遵循C语言命名规则。
示例代码two:
int main() { char* pChar; // 1个字节 short* pShort; // 2个字节 int* pInt; // 4个字节 float* pFloat; // 4个字节 double* pDouble;// 8个字节 return 0; }
指针内存访问:* pointer
指针访问操作符 (*) 作用于指针变量即可访问数据。
指针内存访问: * pointer
指针访问操作符 (* ) 作用于指针变量即可访问内存数据。
指针的类型决定通过地址访问内存时的长度范围。
指针的类型统一占用4字节或8字节。
示例代码three:
\#include <stdio.h>
\#include <stdlib.h>
int main()
{
int var = 0;
int another = 0;
int * pVar = NULL;
printf("1. var = %d\n",var);
printf("1. pVar = %p\n",pVar);
pVar = &var; // 使用指针保存变量的地址
*pVar = 100; // *pVar 等价于 var,var = 100;
printf("2. var = %d\n",var);
printf("2. pVar = %p\n",pVar);
pVar = &another; // 改变了pVar的指向,使得pVar保存another的地址。
*pVar = 1000; // another = 1000;
printf("3.another = %d\n",another);
printf("3.pVar = %p\n",pVar);
printf("4. add==> %d\n",var + another + *pVar); // 100 + 1000 + 1000 = 2100
system("pause");
return 0;
}
4 小结
-
指针是C语言中的变量 (本质为容器)。
-
指针专用于保存程序元素的内存地址。
-
可使用 * 操作符通过指针访问程序元素本身。
-
指针也有类型,指针类型有数据类型 + * 构成。