C語言程式設計(十九)12 19

2021-10-01 15:35:32 字數 3056 閱讀 7704

指標

1、定義

基型別 * 指標變數名

2、賦值

int a;

int *pa=&a;// int a,*pa=&a;

int *p2;

p2=&a;

兩個運算子

& 取位址,後面運算元必須是變數 * 指標運算子,後面的運算元必須是指標

int a=3;

int *pa=&a;

&a 正確,表示a的位址

&pa 正確,表示pa的位址

*a 不對

*pa 正確,表示的是pa指向的變數,即a

*&a 正確, 表示的就是a

*&pa 正確,表示的是pa

&*a 不對

&*pa 正確,表示的是pa,即&a,

& * 如果正確使用,則兩個運算子可以相互抵消

void exchange(int *p1,int *p2)

void exchange(int *p1,int *p2)

利用指標訪問(引用)陣列

通過下標遍歷陣列元素

int a=;

a表示的是陣列首元素的位址,是乙個位址常量,不能改變,等價&a[0]

int * pa=a;//指標變數pa指向陣列首地

int *pa=&a[0];

如果指標變數指向陣列的首位址,此時指標變數可以使用下標,即指標變數等同於陣列名

a[1]====>pa[1]

當指標變數指向陣列的時候,指標變數的加減運算才有意義

當指標變數pa指向陣列a的首位址,且pa的值不能改變,一直指向陣列的首位址,i表示下標

pa+i《=》&a[i]《=》&pa[i] 《=》a+i 表示的是陣列元素的位址*(pa+i)《=》a[i]《=》pa[i]《=》*(a+i) 表示的是陣列元素

void

main()

/*for(i=0;i<10;)

*/for

(i=0

;i<

10;i++)/*

for(i=0;i<10;)

*/}

void

main()

for(i=

0;i<

10;i++

)}

//通過指標變數的改變,訪問陣列元素

void

main()

for(pa=a;pa10;pa++

)//一定要注意指標的當前位置

/*for(pa=a;pa}

void

main()

for(i=

0,pa=a;i<

10;i++

,pa++

)//一定要注意指標的當前位置

}

void

main()

;int i;

int*pa=

&a[3];

for(i=

3;i<

10;i++

,pa++

)//通過指標變數,為a[3]-a[9]賦值

/*for(i=3;i<10;i++)//通過指標變數,為a[3]-a[9]賦值

*/for

(i=0

,pa=a;i<

10;i++

,pa++

)//一定要注意指標的當前位置,迴圈輸出陣列所有的元素

/*for(i=0,pa=a;i<10;i++)//一定要注意指標的當前位置,迴圈輸出陣列所有的元素

*/}

用陣列名做函式引數

void main();}

int research(int a,int x,int num)

;int t,x,index;

int research1(int a,int x,int num);

int insert(int a,int index,int x,int num);

arraynum=10;

size=6;

scanf("%d",&x);

/ t=research(a,x,size);

if(t1)

else

*/t=research1(a,x,size);//陣列名a做函式的實參,傳遞的是值(位址),即陣列的首位址

if(t!=-1)

else

scanf("%d%d",&index,&x);

t=insert(a,index,x,size);

if(t0)

else

}int research(int a,int x,int num)//a是int型別的指標,等價於int research(int * a,int x,int num)

}return 0;

int research1(int a,int x,int num)//查詢陣列中的x,返回x的下標

for(i=num-1;i>=index;i–)//後移

a[index]=x;//在index位置插入x

size++;

return 1;//用1代表正常插入元素的情況

}int insert1(int a,int x,int num)//在陣列元素的最後追加x

a[num]=x;

size++;

return 1;//用1代表正常插入元素的情況

}int delete(int a,int x,int num)//陣列中的x如果存在則刪除

for(i=t;i}

void update(int a,int x,int y,int num)//將陣列中的x更新成y

a[t]=y;

return 1;

Lua程式設計(三十九)

假設有乙個用表來表示集合的模組。該模組還有一些用來計算集合並集和交集等的函式。local set function set.new l local set for v in ipairs l do set v true end return set endfunction set.union a,b...

shell程式設計題(十九)

題目 設計乙個shell程式,在 userdata目錄下建立50個目錄,即user1 user50,並設定每個目錄的許可權,其中其他使用者的許可權為 讀 檔案所有者的許可權為 讀 寫 執行 檔案所有者所在組的許可權為 讀 執行。答案 bin bash mkdir userdata if eq 0 t...

C 高階程式設計十九天 部分類

部分類 c 中使用關鍵字 partial把類,結構或結構放在多個檔案中 一般情況下 乙個類全部駐留在單個檔案中 但有時候 多個開發人員需要訪問同乙個類 或者某種型別的 生成器生成了乙個類的某部分 所以把類放在多個檔案中是有益的.用法 把partial 關鍵字放在 class,struct 或inte...