手把手入门C语言—C语言指针( 二 )


如图分析:
实验二
第二个实验: 如果修改 p 值, i值有变化吗?
当执行完p = &j;时p的地址值变了 , 但是i的值没有变化
【手把手入门C语言—C语言指针】#include #include /**指针就是内存地址 内存地址就是指针*/main(){int i =100;int* p = &i; //第二个实验: 如果修改 p 值, i值有变化吗? // 修改 p 的话是修改地址值,所以定义 int j = 200;// 结果如下:// 修改p值前,i的值时:100// 修改p值后,i的值时:100 printf("修改p值前,i的值时:%d\n",i); int j = 200;p = &j;printf("修改p值后,i的值时:%d\n",i); system("pause");}
如图分析:
实验三
第三个实验: 如果修改 i 值, *p值有变化吗?
有变化 , *p:把对应的地址的值取出来 , 此时为200
#include #include /**指针就是内存地址 内存地址就是指针*/main(){int i =100;int* p = &i; //第三个实验: 如果修改 i 值, *p值有变化吗?// *p对应的是int类型的占位符 printf("修改i值前,*p的值时:%d\n",*p); i =200;// *p:把对应的地址的值取出来 , 此时为200printf("修改i值后,*p的值时:%d\n",*p); system("pause");}
如图分析:
实验四
==第四个实验: 如果修改 *p 值, i值有变化吗? ==
有变化 , *p = 200; 执行完后:把对应的地址的值变为200
#include #include /**指针就是内存地址 内存地址就是指针*/main(){int i =100;int* p = &i; //第四个实验: 如果修改 *p 值, i值有变化吗? printf("修改*p值前,i的值时:%d\n",i); // 把地址对应的值改变了 *p = 200;printf("修改*p值后,i的值时:%d\n",i); system("pause");}
如图分析:
总代码
#include #include /**指针就是内存地址 内存地址就是指针*/main(){int i =100;int* p = &i; //第一个实验: 如果修改 i 值, p值有变化吗? // 修改i值前,p的值时:0x60fef8// 修改i值后,p的值时:0x60fef8// 得出的结果为不变 // 当我们在次打印p的值时,虽然i的值变为200了 , 但是是打印p的值 , 打印p的值与i的值(100,200) , 没有关系 。/**printf("修改i值前,p的值时:%#x\n",p); i =200;printf("修改i值后,p的值时:%#x\n",p); //第二个实验: 如果修改 p 值, i值有变化吗? // 修改 p 的话是修改地址值,所以定义 int j = 200;// 结果如下:// 修改p值前,i的值时:100// 修改p值后,i的值时:100 /**printf("修改p值前,i的值时:%d\n",i); int j = 200;p = &j;printf("修改p值后,i的值时:%d\n",i); *///第三个实验: 如果修改 i 值, *p值有变化吗?// *p对应的是int类型的占位符 /**printf("修改i值前,*p的值时:%d\n",*p); i =200;printf("修改i值后,*p的值时:%d\n",*p); *///第四个实验: 如果修改 *p 值, i值有变化吗? printf("修改*p值前,i的值时:%d\n",i); // 把地址对应的值改变了 *p = 200;printf("修改*p值后,i的值时:%d\n",i); system("pause");}