基本含义
指针:本质是一个与地址相关的复合类型,它的值是数据存放的位置,也就是地址。
数组:本质是一系列的变量。
数组名:对应着一块内存,其地址与容量在生命周期内保持不变,只有数组的内容可以改变
指针可以随时指向任意类型的内存块,它的特征是可变的。
参数:当数组作为函数的参数传递时,数组则自动退化为同类型的指针。
指针与数组
指针:int a=10; int *p=&a;
指针的指针: int b=10; int *p=&b; int **pp=&p
指针数组: int *p[10]; 含有10个指针元素,每一个元素都是指针。
因为下标运算符[]的优
先级高于指针运算符*。
数组指针: int (*p)[10];指针可以用来指向含有10个元素的整数数组。
基本概念
变量的指针是变量的地址。
存放变量的地址的变量是指针变量。
int *p1;表示p1是一个指针变量,它的值是某个整型变量的地址。亦说p1指向一个整型变量
指针的赋值
1.两种方法:
int a; int a;
int *p=&a; int *p;
p=&a;
绝对不可以把一个数赋予指针变量:int *p; p=1000;(错)
2.指针变量的值是可以改变的:
int i,j,*p1,*p2;
p1=&i;
p2=&j;
p1=p2;
(这是允许的,*p1的值是j)
*p1=*p2;
(p1指向的内容变成j)
数组指针和指针数组
数组指针:指向数组的指针,int (*pA1)[5]
指针数组:指针构成的数组,int *pA2[5]
说白了,PA1是一个指针,PA2是一个数组。看下面代码会理解数组指针清楚:
#include <iostream>using namespace std;
int main()
{
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int (*p)[4];
int i,j;
p=a;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
cout<<*(*(p+i)+j)<<",";
}
}
cout<<endl;
cout<<(*p+1)<<endl;
cout<<*(*p+1)<<endl;
cout<<(*p)[0]<<endl;
cout<<(*p)[1]<<endl;
cout<<(*p)[6]<<endl;
p++;
cout<<(*p)[0]<<endl;
system("pause");
return 0;
}
更多内容参见 谭浩强C语言程序设计第十章
还可参考网络资源:http://www.360doc.com/content/08/0410/16/61255_1180436.shtml
posted on 2012-03-28 16:26
愤怒的考拉 阅读(67)
评论(0) 编辑 收藏