在学习单片机的时候,经常需要让一个指针指向固定的区域,这时候应该怎么操作? #include<stdio.h> int main() { int *p; int a =10; p=&a; printf("改变前变量a的地址=%p\n",&a); p=(int *)0x000000000061FE33; printf("改变后p指向的地址=ox%p\n",p); printf("变量a的地址=ox%p\n",&a…
二级指针:可以理解为指向指针的指针,存放的是指针变量的地址. 下面用一级指针来保存一个指针变量的地址: #include<stdio.h> int main() { int *p1; int *p2; int data; p1=&data; p2=&p1; printf("p1保存的地址=%p\n",&data); printf("data=%d\n",*p1); printf("p2的地址=%p\n",&am…
指针就是地址,变量的值可以通过两种方式访问,一个是通过变量名,一个是通过地址访问. 从而引出一个问题,即什么是指针变量?整型(字符)变量就是存放整形(字符)的变量,指针变量就是存放指针的变量,也就是存放地址(16位表示)的变量. 指针变量本身也是有一个地址的. 例子: #include<stdio.h> int main() { int a=10; int *p;//这里的*是一个标识符,表示这个变量p是个指针变量 p = &a;//p指向变量a的地址 printf("a的地…
定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组,数组指针等同于二维数组名 #include<stdio.h> int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 for(int i=0;i<3;i…
在C语言中,数组名代表数组中首元素的地址,所以,下面两句获取数组的首地址是等价的: #include<stdio.h> int main() { int a[5]={1,2,3,4,5}; int *p=&a[0]; int *p2=a; printf("地址p=%p\n",p); printf("地址p2=%p",p2); return 0; } 输出结果: 地址p=000000000061FDF0地址p2=000000000061FDF0 根…
指针是存放变量的地址,那为什么要区分类型?不能所有类型的变量都用一个类型吗?下面用一个例子来说明这个问题. #include<stdio.h> int main() { int a=0x1234; int *p=&a; char *c=&a; printf("p指向的变量a的地址=%p\n",p);//打印指针p指向的变量的16进制的地址 printf("c指向的变量a的地址=%p\n",c);//打印指针c指向的变量的16进制的地址 p…