嵌入式自学第二天
1、在计算机内存中,每一个字节单元,都有一个编号,称为地址。
2、内存单元的地址称为指针。
3、指针变量声明。例:char *p;
int a = 3; //int a; a = 3;
int *pa = &a; //int * pa; pa = &a;
4、两个指针相减不是地址量,而是两指针相隔数据个数。
5、指针运算的本质是地址的运算。
6、指针加n,移动n个目标数据(不是移动n个字节)。
7、交换数组内容
#include "stdio.h"
int main()
{
int a[6]={1,2,3,4,5,6};
int *p,*q,w;
int i=0;
p=a;
q=p+5;
while(q<p)
w=*p;
*p=*q;
*q=w;
p++;
q--;
}
for(i=0;i<6;i++)
printf("%d",a[i]);
return 0;
}
8、p[1]=*(p+1)。前面如果有p++,p[1]的位置为原来的p[2]。
9、二位数组a是个行指针,a[n]是个列指针,*a是个列指针。
10、数组指针,是个行指针,例:int (*p)[3];int a[2][3];3为二维数组的列数。
例:
*(*(a+i)+j)//是取数组a的第i行j列