posts - 1,  comments - 0,  trackbacks - 0
基本含义
指针:本质是一个与地址相关的复合类型,它的值是数据存放的位置,也就是地址。
数组:本质是一系列的变量。
数组名:对应着一块内存,其地址与容量在生命周期内保持不变,只有数组的内容可以改变
           指针可以随时指向任意类型的内存块,它的特征是可变的。
参数:当数组作为函数的参数传递时,数组则自动退化为同类型的指针。
指针与数组
指针: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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿

随笔档案

文章档案

搜索

  •  

最新评论