指针就是内存地址,例如0x000012ea。
1.什么是指针类型
指针类型是一种新的类型,常见的类型有整形(int),用来存放整数;字符型(char),用来存放字符或字符串;浮点型(float),用来存放浮点型数据,比如小数。而指针类型是一种与他们独立的新类型,它存放的是各种数据存放的地址。它的格式为:类型 ,(为间接访问运算符/解引用指针)。
2.指针与指针变量
指针是一个地址,而指针变量是存放地址的变量。

实例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int x =100;
int* p = &x; //p称为指针变量,p里面保存的值就是指针
printf("指针变量p里面保存的值:%d\n",p);
printf("指针变量p指向的内存单元的值:%d\n",*p);
printf("指针变量p的地址是:%d\n",&p);
return 0;
}
运行结果:
指针变量p里面保存的值:6487580
指针变量p指向的内存单元的值:100
指针变量p的地址是:6487568
3.取址和取值
对于 int x = 100; int *p=&x;
| 符号 | 含义 |
|---|---|
| &p | 获得指针变量p的地址 |
| *p | 获得指针变量p所指向的内存单元的值 |
假设有一个 int 类型的变量 x,p 是指向它的指针,那么&x和&p分别是什么意思呢?
分析可知:
&x 等同于x , &p等同于p
例如:
#include <stdio.h>
#include <stdlib.h>
int main() {
int x =100;
int* p = &x; //p称为指针变量,p里面保存的值就是指针
printf("指针变量p里面保存的值:%d\n",p);
printf("x的地址值是:%d\n",&x);
printf("指针变量p里面保存的值:%d\n",&*p);
printf("指针变量p指向的内存单元的值:%d\n",*p);
printf("x的值是:%d\n",x);
printf("指针变量p指向的内存单元的值:%d\n",*&x);
printf("指针变量p的地址是:%d\n",&p);
return 0;
}
运行结果:
指针变量p里面保存的值:6487580
x的地址值是:6487580
指针变量p里面保存的值:6487580
指针变量p指向的内存单元的值:100
x的值是:100
指针变量p指向的内存单元的值:100
指针变量p的地址是:6487568