· 指针(pointer)
·指针是一个值为内存地址的变量(或数据对象)
指针是一个变量
指针是用来存放内存地址的
指针(地址)是16进制
· 定义指针
int 定义整型
int* 定义指针
int year
int* ptr_year //最好加上"ptr",即这是一个指针型变量
· NULL
在<stdio.h>中,NULL被定义为常量
int* ptr_num = NULL;
指针初值设为空,表示指针不指向任何地址
· 应用:
单机游戏中修改内存
很危险
· 取地址符&
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int* ptr_num = # //指针的标准赋值方式
printf("num 变量的地址是:%p\t%x\n", ptr_num,ptr_num); //%p是打印指针型变量 BTW:%x是16进制占位符
return 0;
}
//运行结果***********************************************
num 变量的地址是:0060FF0C 60ff0c
Process returned 0 (0x0) execution time : 4.901 s
Press any key to continue.
//运行结果***********************************************
说明了指针即16进制
不可以 int* ptr_num = 0060FF0C; 进行赋值,必须用 & 符号进行赋值
·间接运算符*(取值符)
'*'就是取这个地址的值
根据地址找到对应空间所赋的值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int* ptr_num = # //指针的标准赋值方式
printf("num 变量的地址是:%p\t%x\n", ptr_num,ptr_num); //%p是打印指针型变量 BTW:%x是16进制占位符
printf("*ptr_num对应的值为: %d\n", *ptr_num);//取这个地址对应的值
return 0;
}
//运行结果***********************************************
num 变量的地址是:0060FF08 60ff08
*ptr_num对应的值为: 9
Process returned 0 (0x0) execution time : 3.090 s
Press any key to continue.
//运行结果***********************************************
·使用指针修改变量值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int* ptr_num = # //指针的标准赋值方式
printf("num 变量的地址是:%p\t%x\n", ptr_num,ptr_num); //%p是打印指针型变量 BTW:%x是16进制占位符
*ptr_num = 9999;
printf("*ptr_num对应的值为: %d\n", *ptr_num); //取这个地址对应的值
return 0;
}
//运行结果***********************************************
num 变量的地址是:0060FF08 60ff08
*ptr_num对应的值为: 9999
Process returned 0 (0x0) execution time : 3.103 s
Press any key to continue.
//运行结果***********************************************
·指针的地址
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int* ptr_num = # //指针的标准赋值方式
//头疼点:指针的地址
int* ptr_num2 = &ptr_num;
printf("num 变量的地址是:%p\t%x\n", ptr_num,ptr_num); //%p是打印指针型变量 BTW:%x是16进制占位符
printf("指针ptr_num的地址是: %p\n", ptr_num2);//取指针的地址
return 0;
}
//运行结果***********************************************
num 变量的地址是:0060FF08 60ff08
指针ptr_num的地址是: 0060FF04
Process returned 0 (0x0) execution time : 3.870 s
Press any key to continue.
//运行结果***********************************************
·通过指针的指针找到原空间数值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int* ptr_num = # //指针的标准赋值方式
//头疼点:指针的地址
int** ptr_num2 = &ptr_num; //注意这里必须是两个*
printf("num 变量的地址是:%p\t%x\n", ptr_num,ptr_num); //%p是打印指针型变量 BTW:%x是16进制占位符
printf("指针ptr_num的地址是: %p\n", ptr_num2);//取指针的地址
//如何通过指针的指针,访问到原指针指向的空间?
printf("原空间num对应的值是:%d\n",**ptr_num2); //**ptr_num2
return 0;
}
//运行结果***********************************************
num 变量的地址是:0060FF08 60ff08
指针ptr_num的地址是: 0060FF04
原空间num对应的值是:9
Process returned 0 (0x0) execution time : 0.216 s
Press any key to continue.
//运行结果***********************************************
老九C语言第42课指针
猜你喜欢
转载自blog.csdn.net/cxd15194119481/article/details/84896498
今日推荐
周排行