1.下標法,用a[i]來訪問陣列元素;
2.指標法,(ptr+i)形式間接訪問;
3.陣列名,用(a+i)形式訪問陣列;
4.指標下標法,ptr[i]形式訪問陣列元素;
# 1.直接訪問法
printf("%d",a[i][j]);
# 2.指標訪問法
int *ptr;ptr=a[0];
for(i=0;i<3;i++)
for(j=0j<4;j++)
scanf("%d",ptr++);
型別說明符(*指標變數名)[長度];
int a[3][4]=,,18,20,22,24};
int (ptr)[4];
ptr=a;
for(i=0;i<3;i++)
for(j=0j<4;j++)
printf("%4d",((ptr+i)+j));
其中(a+i)+j是二維陣列a的i行j列的首位址。其元素的值為((a+i)+j);
//函式指標變數的的定義形式一般為: 型別說明符 (*指標變數名)();
int add(int a,int b)
void result(int (*ptr)(),int a,int b)
int main()
型別說明符 *函式名(形參表)
例如:int *pfun(int x,int y)
void main()
5.字元指標與字元陣列的區別
(1)字元指標本身是乙個變數,它的值可以改變,而字元陣列的陣列名雖然代表該陣列的首位址,但它是常量,它的值不能改變。
(2)賦初值所代表的意義不同
對於字元指標
char *ptr="hello world";
char *ptr,ptr="hello world";
對字元陣列進行初始化
char str="hello world";不能寫為char str[80];str="hello world";
實際賦值時,只能對字元陣列的各個元素逐個賦值
對於字元陣列可以這樣使用
char str[80];
scanf("%s",str);
對於字元指標,應申請分配記憶體,取得確定位址
char *str;
str=(char *)malloc(80);
scanf("%s",str);
這個情況會使程式很不穩定
char *str;
scanf(「%s」,str);
型別說明 *陣列名[陣列長度];
例如:char*str[4]; 指該指標陣列包含4個指標。
#include void main()
; int i,*ptr2[3],a[3]=,b[3][2]=;
for(i=0;i<4;i++)
printf("\n%s",ptr1[i]);
printf("\n");
for(i=0;i<3;i++)
ptr2[i]=&a[i];
for(i=0;i<3;i++)
printf("%4d",*ptr2[i]);
printf("\n");
for(i=0;i<3;i++)
ptr2[i]=b[i];
for(i=0;i<3;i++)
printf("%4d%4d\n",*ptr2[i],*ptr2[i]+1);
}
型別說明符 **指標變數名;
例如:
float **ptr;
其含義是定義乙個指標變數ptr,它指向另乙個指標變數(該指標變數又指向乙個實形的變數)
由於指標運算子 * 是自右向左結合,所以上述定義相當於:
float * *ptr;
int i,j,a[10],b[5][9],*p,*q,(*pi)[9],*pa[5];
char *ps;
char pas=; //字元常量的首位址分別賦給指標陣列pas[0],pas[1],pas[2];
p=&i; //將一變數位址賦給指標變數p
q=p; //p和q是指標變數,將p的值賦給q;
q=null; //將null空指標賦給指標變數q;
p=(int)malloc(5*sizeof(int));//分配10個位元組的儲存單元,並把首位址賦給p
p=a;//將a的首位址賦給指標變數p;
p=&a[i];//將一維陣列a的第i個元素賦給指標變數p
p=&b[i][j];//將二維陣列b[i][j]的位址賦給變數p
pi=b+i;//等價pi=&b[i],將pi指向二維陣列b的第i行
for(i=0;i<5;i++)
pa[i]=b[i];//分別將二維陣列b的第i行的第0列元素賦給
ps="hello";//將字串常量賦給指標變數ps。
C語言深度剖析指標
1.指標是什麼?在電腦科學中,指標是程式語言中的乙個物件,利用位址,它的值直接指向存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為 指標 意思是通過它能找到以它為位址的記憶體單元。記憶體 最小記憶體單元 bit 1byte 8bi...
深度剖析C語言的各種指標
該文章詳解了c語言中指標的概念與用法,對初學者了解c語言中指標這一重要概念有很大的幫助,其中變數的定義與使用一節尤為有價值。要點如下 1.指標是個變數,本質代表了乙個位址。2.變數拆解遵循由近到遠,從左到右的原則。3.c語言中,變數怎麼使用就怎麼定義 指的是書寫格式上保持一致 在c語言中,指標就是乙...
C語言深度剖析
c語言深度剖析 1,編譯器通常不為普通const唯讀變數分配儲存空間,而是將他們儲存在符號表中,使得它成為乙個編譯期間的值,沒有了儲存與讀記憶體的操作,使得它的效率更高。2,const int p p可變,p指向的物件不變。int const p p可變,p指向的物件不可變 int const p ...