标签:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
【数组指针】
1、数组指针:
定义一个指针指向数组的某一个元素
数组元素指针;指针变量可以指向数组元素;
1)数组名a不代表整个数组,只代表数组首元素的地址;
2)是指向首地址,而不是每一个元素;
2、数组指针的引用:
在指针向数组元素时,允许以下操作
加一个整数(用+或+=),如p+1;
减一个整数(用-或-=),如p-1;
自加P++
自减p--;
两个指针相减:p1-p2;
P+1指向下一个元素的地址;
结论:
引用一个数组元素,可用下面两种方法:
(1)下标法,如a[i]形式
(2)指针法,如*(a+1)或*(p+1)
(3)a是常量(a++错误),p是变量(p++正确)
P+1=p+1*sizeof(int);
3、二维数组指针的定义:
用来指向二维数组的每一行,存放的是行的首地址;
二维数组名是指向行的,和二维数组名有相同的性质;
一般形式:
数据类型 (*指针变量名)[二维数组列数];int (*p)[4];定义一个数组指针,指向含有4个元素的一维数组;
p=a;将二维数组的首地址给p;
p++;变量可以用自增自减;
*(*(p+i)+j);遍历二维数组元素;
2、指针数组和二维数组指针的区别:
指针数组:存放指针的数组,int *pa[3]={a[0],&b,&c};一组有序的指针,保存多个地址
二维数组指针:int (*pa)[3];是一个单个的变量;一个二维数组的地址
【指针数组】
1、一维指针数组:
一个数组的元素值为指针就是指针数组;一组有序的指针集合,
一般形式:
类型说明符 *数组名[数组长度]
int *a[5];
里面的元素是用来存放地址的!;
1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 // insert code here... 5 int a=1,b=2,c=3; 6 int *pa[3]={&a,&b,&c}; 7 printf("%d\n%p\n%d\n",*pa[0],&a,**pa); 8 return 0; 9 }
2、两个指针之间的减法运算:
两个指针变量相减之差是两个指针所指数组元素之间相差的元素个数
两个指针变量都指向同一个数组
(p2-p1)*sizeof(int);
1)判断两个指针变量指向的元素是否连接
2)判断两个指针变量之间相隔几个元素;
加完可能会越加,没有意义,是同一个数组指针;
同一个元素结果为0,相邻结果为1;
【字符串指针】
1、字符数组
用字符数组保存字符串
2、字符串指针指向字符串
Char *变量名=”字符串内容“;//字符串类型是常量
1)字符串常量也由地址,把字符串常量的首地址赋值给指针,是第一个字符的数组;
2)只能读取,不能修改;
3)可以重新指向;
4)不能直接接收键盘输入
3、二维字符串数组
Char ch[3][10]={
"",
"",
""
}
4、char类型的指针数组
存放地址的数组,存放的字符串的说地址;是一个常量地址
黑马程序员---C基础10【数组指针】【指针数组】【字符串指针】
标签:
原文地址:http://www.cnblogs.com/snowimba/p/4855640.html