黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
四 数组和指针
01 数组名代表数组在内存中的首地址,表示的是地址信息,因此数组名可以理解为一个指针,不过数组名是一个常量,不能改变.
#includeint main(){ char name[]="haha"; char name1[]="gggg"; char name3[2][10] = { "fffff","jjjjj"}; printf("%s\n",name3[0]); return 0;}
02 指向数组的指针:定义指向数组的指针就是将数组的首地址赋值给指针变量.
如:int a[10];
int *p; p=&a[0];
p=&a[0]等价于p=a
#includeint main(){ char name[]="haha"; char name1[]="gggg"; char name3[2][10] = { "fffff","jjjjj"}; printf("%s\n",name3[0]); return 0;}
03 通过指针引用数组元素:p+i表示a[i]的地址,*(p+i)表示数组元素a[i]
04 可以改变指针变量的值,但指针常量不可改变.指针运算符的优先级最高
05 多维数组和指针:
x[i]等价于*(x+i)
&x[i]等价于x+i
/* 1.数组元素的访问方式 int ages[5]; int *p; p = ages; 1> 数组名[下标] ages[i] 2> 指针变量名[下标] p[i] 3> *(p + i) 2.指针变量+1,地址值究竟加多少,取决于指针的类型 int * 4 char * 1 double * 8 */#includevoid chang(int *array);int main(){ int ages[] = { 10,5,55,66,45}; chang(ages); return 0; }void chang(int *array){ printf("%d\n",array[2]); }
06 指向多维数组元素的指针变量:
指向由m个元素组成的一维数组的指针变量的定义为: 类型名(*指针变量名)[长度]; 如:int(*pa)[4];
07 字符串和指针:
在对字符串中的字符进行存取时,可以定义一个指针变量,指向字符串中的第一个字符,再利用指针的移动来访问字符串中得字符