基本含義
指針:本質是一個與地址相關的復合類型,它的值是數據存放的位置,也就是地址。
數組:本質是一系列的變量。
數組名:對應著一塊內存,其地址與容量在生命周期內保持不變,只有數組的內容可以改變
指針可以隨時指向任意類型的內存塊,它的特征是可變的。
參數:當數組作為函數的參數傳遞時,數組則自動退化為同類型的指針。
指針與數組
指針: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
憤怒的考拉 閱讀(70)
評論(0) 編輯 收藏