1. 程式人生 > >【黑馬程式設計師】C語言基礎-指標

【黑馬程式設計師】C語言基礎-指標

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

一、指標定義

         地址指向不同的變數,通過地址能找到所需的變數。將這些地址形象化後成為指標。

二、指標變數

        存放地址的變數是指標變數,它用來指向另一個物件。       使用格式:
型別名 *指標變數名;
              引用指標變數:        1)將變數地址賦值給指標變數        2)引用時 *指標變數名 代表指標指向變數的值,指標變數名代表指標指向變數的地址 。
        例:
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int a = 100;
    int *p = &a;
    printf("%d,%d,%p",a,*p,p);
    return 0;
}
                  指標變數作為函式引數時是將一個變數地址傳送到另一個函式中。       作用:函式在沒有返回值的情況下進行計算只是修改了形參的值而無法修改真正實參的值。但將地址傳遞到函式中後便可以改變實參的值。        例:
#include <stdio.h>
void test(int *a,int *b);
int main(int argc, const char * argv[]) {
    int a = 100,b = 10;
    int *p1 = &a,*p2 = &b;
    test(p1, p2);
    printf("%d,",a);
    return 0;
}

void test(int *a,int *b){
    *a = *a+*b;
}
        通過這種方法就可以通過一個函式修改多個變量了。

三、指標陣列和陣列指標

       (1)指標陣列

              存在一個數組,它的每一個元素都是指標。這樣的陣列稱為指標陣列。            使用格式:            型別名 *陣列名[陣列長度];            例:
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int d = 1,b = 2,c = 3;
    int *p1 = &d,*p2 = &b,*p3 = &c;
    int *a[3] = {p1,p2,p3};
    for (int i = 0; i<3; i++) {
        printf("%p\t",a[i]);
    }
    return 0;
}
          

       (2)陣列指標

           陣列指標是指向陣列首地址的指標。

           使用格式:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int a[5];
    int (*p)[5];
    p=&a;
    return 0;
}

四、指標函式和函式指標

        (1)指標函式

            允許一個函式的返回值是一個指標(即地址),這種函式稱為指標函式。

使用格式: 

型別說明符 *函式名(形參表){
        函式體;
      return *指標型別資料;
}

(2)函式指標

將函式的首地址賦值給一個指標變數,使該指標指向該函式。這個指標變數就是函式指標

               使用格式:

型別說明符 (*變數名)(函式引數);