c基础 - 指针变量 和 获取地址的值
2019-03-02 本文已影响0人
世道无情
前言
变量:就是给内存地址取一个别名;
1. 概述
比如:
在 java 中定义:int i = 100;用变量 i 接收 100这个数据;
在 c 中定义:int i = 100 ; int* p = &i;
在 c 语言中:
指针变量:
上边的 p 就是指针变量;
相当于地址变量。 指针指向的就是变量的地址 或者 指针存放的就是变量的地址,
也就是说 p 指向的就是 i的地址 或者 p存放的就是 i的地址;
1. 用 &i 来获取 变量 i 的地址;
2. 用 指针变量 int* p 来接收 &i 的返回值, 如 int* p = &i;
3. int*:表示int类型的指针,或者int 类型的地址,是用于接收int类型的指针;
获取地址的值:
用 * 来获取地址的值 ;
1. *(&i) 就是用来获取 i的地址的 值;
2. int* p = &i中:int*表示int类型的指针 或者 int类型的地址,用于接收int类型的指针;
3. p:这里的p已经是地址了,是指针的变量,可以直接通过 *p获取值;
4. *p:表示获取 地址 &i 的值;
下边两句输出语句是一样的:
printf("i的值为:%d\n" , *(&i));
printf("i的值为:%d\n", *p);
也就是说:根据int* p = &i可知:指针变量p就是 指向&i的地址 或者说 指针变量p存放的就是 &i的地址
2. 代码如下
#include<stdio.h> // 导入头文件,头文件都是方法的声明。
void main(){
int i = 100;
double d = 200;
printf("i的值为:%d\n" , i); // 100
// 通过 *获取地址的值
printf("i的值为:%d\n" , *(&i)); // 100, 首先获取i的地址&i,然后获取该地址对应的值 *(&i)
// 指针变量,相当于地址变量:指针指向的就是变量地址 或者 存放的就是变量的地址
// int* :表示int类型的指针,或者int类型的地址,用于接收int类型的指针
// p:是指针的变量
int* p = &i;
// 获取到i的地址后,再打印i的值:
printf("i的值为:%d\n", *p); // 100, *p:表示对地址i去取值
// double*:表示double类型的指针,或者double类型的地址,用于接收 double 类型的指针
// double* pl = &d;
getchar();
}