1:指针
指针就是地址,地址就是指针
内存是电脑上特别重要的寄存器,计算机中的程序运行都是在内存中,所以为了有效的使用内存,把内存划分为一个个小的内存单元,每个内存单元大小是1个字节, 为了能够有效的访问到内存中的每个单元,就给内存进行编号,这些编号被称为内存单元的地址。
内存地址示意图
C语言调试模式下观察内存存储情况
内存中数据的存储
内存中16进制的数据存储 0000 0000 0000 0000 0000 0000 0000 1010
0 0 0 0 0 0 0 A
0x 00 00 00 0a ----------> 转换为16进制的形式
【C语言中使用printf打印输出地址 ----------> %p取出地址】
【指针变量的定义】
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main(void) {
int a = 10;
// 把地址a存储起来,把内容放到变量中去变量的名字叫做p 类型是int* p 这个时候P就是指针变量
int* p = &a;
printf("%p\n",&a);
return 0;
}
内存单元
内存单元有自己的编号,这个编号我们称之为内存单元的地址。
编号 -> 地址 -> (地址又被称为指针,指针就是地址就是内存单元的编号)
存放指针(或者地址的变量) 我们称之为指针变量
int mian(void){
int a = 10;
int* p = &a;
return 0;
}
【指针变量】
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
/*
指针变量:指针就是用来存放地址的,指针就是地址
指针变量里存储的就是地址
*/
int main(void) {
int a = 10;
int* p = &a;
char ch = 'w';
// 创建一个char类型的指针变量
char* pc = &ch;
return 0;
}
【C语言中的解引用操作符】
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
/*
指针变量:指针就是用来存放地址的,指针就是地址
指针变量里存储的就是地址
*/
int main(void) {
int a = 10;
int* p = &a;
#if 0
* p 就是解引用操作符,意思就是通过p中存放的地址,找到p所指向的对象
* p 就是p指向的对象
#endif
*p = 20;
return 0;
}
【指针的类型】
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main(void) {
// 不管是什么类型的指针,都是在创建指针变量
// 指针变量是用来存放地址的
// 指针变量的大小取决于一个地址存放的时候需要多大的空间
// 32位机器上的地址:32bit位-- 4 个字节 ,64位机器上的地址:64bit位--byte
// 指针变量的大小在64位的平台下占用的是8个字节
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
return 0;
}