c語言指標使用小練習
阿新 • • 發佈:2019-02-19
c語言指標非常重要,可以成為c的靈魂。為了更深入的理解指標,以下是幾個關於指標的小練習
//指標變數作為函式引數,將兩個變數的值互換
<span style="font-family: Arial, Helvetica, sans-serif;">#import <Foundation/Foundation.h></span>
void swap (int *a, int *b); void swap (int *a, int *b) { int temp; temp = *a;//通過改變指標指向得值來改變變數得數值 *a = *b; *b = temp; } int main(int argc, const char * argv[]) { //指標練習 //指標變數作為函式引數來改變兩個變數得值 int a = 28, b = 34; int *p = &a; int *q = &b; swap(p, q); printf("a = %d, b= %d", a, b); return 0; }
int main(int argc, const char * argv[])
{
//指標練習
//陣列元素的指標——陣列元素的指標就是陣列元素的地址,可以用一個指標變數指向一個書組元素
int a[5] = {33,45,67,34,9};
int *p , x;
p = &a[0];//讓指標p指向零號元素的地址
//利用下標法引用陣列元素
x = a[3];//將第4個元素的值給x
//利用指標引用陣列元素
x = *(p+2);//將第4個元素的值給x
return 0;
}
通過指標變數輸出整型陣列a的10個元素
int main(int argc, const char * argv[]) { //指標練習 //通過指標變數輸出整型陣列a的10個元素 int a[10], *p; p = a;//指標p指向a陣列的0號元素 printf("please enter 10 integer numbers: "); for (int i = 0; i < 10; i++) { scanf("%d",p++);//每輸入一個數字,指標向後移動一位,指向下一個元素的地址 } p = a;//經過一輪迴圈後,指標已經指向陣列的最後一個元素地址,為了正常打印出結果,需要將指標重新指向首元素 <pre name="code" class="objc">for (int i = 0; i < 10; i++,p++) { printf("a[%d] = %d ", i, *p); }
return 0;} 指標使用的小技巧:
假如指標p指向a[0];
則:
(1)p++;
*p;
先讓p加一,指向下一個元素的地址,再做取值操作,即取出a[1]的值。
(2)、*p++;
由於++和*運算同優先順序,結合方式為右jiehe,所以等同於*(p++);先引用p的值,實現*p運算,再讓p的值加一,指向下一個元素的地址。
以上程式的輸出部分可以簡化為:
for (int i = 0; i < 10; i++) {
printf("a[%d] = %d ", i, *p++);
}
(3)、*(p++)與*(++p)區別:
*(p++)是:先取p所指向地址的值,然後讓p+1;
*(++p)是:先讓p+1,再取(p+1)後指向地址的值。
(4)、++*(p)。表示取出p指向地址的值後,再將此值加一。