指针 :一个变量的地址称为该变量指针
int a=5;
int *p;
p=&a; //指向一个整型变量a
int a[5];
int *p;
p=a;//指向一个数组的首地址
int *p=NULL;//初始化为空
指针变量:一个变量专门用来存放另一个变量的地址(即指针)
定义 基类型 *指针变量名; 如flaot *pointer;
pointer=&i; //可以用赋值语句使一个指针变量得到另一个变量的地址
只用整形变量的地址才能放到指向整形变量的指针变量
int a=100;int *pointer;
pointer=&a; //把变量a的地址赋给point
运行输出 a=*pointer=100,point=&a //a的存放地址
&”和“*”两个运算符的优先级别相同,但按自右而左方向结合。因此,&* pointer与&a相同,即变量a的地址。
如果有pointer_2 =&* pointer_1 ;它的作用是将&a(a的地址)赋给pointer_2 ,如果pointer_2原来指向b,经过重新赋值后它已不再指向b了,而指向了a。
(*pointer_1)++相当于a++
重写库函数
char* myStrcat(char *pDest, const char *pSource)
{
char *pTdest = pDest;
while (*pTdest++) //指针一直遍历,指到'\0'的下一位
--pTdest; //回退一格
while (*pTdest++ = *pSource++) //'\0'赋值 自右向左 先++再赋值
return pDest;
}
内存中是以字节数来计算大小的,而strlen返回的只是字符串长度
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000 ,则
表 示 形 式 | 含义 | 地 址 |
a | 二维数组名,指向一维数组a[0],即0行首地址 | 2000 |
a[0], *(a+0), *a | 0行0列元素地址 | 2000 |
a+1,&a[1] | 1行首地址 | 2008 |
a[1],*(a+1) | 1行0列元素a[1][0]的地址 | 2008 |
A[1]+2, *(a+1)+2, &a[1][2] | 1行2列元素a[1][2]的地址 | 2012 |
*(a[1]+2), *(*(a+1)+2), a[1][2] | 1行2列元素a[1][2]的值 | 元素值为13 |