C語言回顧-指針

1.指針:地址數組

指針變量:存放指針的變量函數

指針變量的定義:數據類型 *指針變量名 或者 數據類型* 指針變量名spa

指針變量的初始化:int *p=&a;int *p=NULL;(不能先定義後初始化)指針

用*p獲取指針變量指向的內存空間code

若是指針變量定義之後不進行初始化,這個指針變量存放的是一個垃圾數,這個指針變量,稱爲野指針blog

用函數實現變量值的交換,傳遞指針內存

 

//
//  main.c
//  變量值交換
//
//  Created by fanyafang on 15/11/4.
//  Copyright  2015年 itcast. All rights reserved.
//

#include <stdio.h>
void change(int *a,int *b){
    //用兩個指針變量接收地址
    //交換地址中所存的內容
    //這樣函數執行完之後,指針所指向的內容已經發生了改變
    int temp=0;
    temp=*b;
    *b=*a;
    *a=temp;
}

int main(int argc, const char * argv[]) {
    int a=3,b=4;
    
    change(&a,&b);
    
    printf("a=%d,b=&b",a,b);
    
    return 0;
}

 

2.指針的應用場景it

1)在被調函數中能夠修改主調函數的值io

2)讓函數能夠有多個返回值(把地址傳過去,能夠修改地址指向的值)ast

3.二級指針

int **p1=&p;//p是一個一級指針

4.數組指針

指向數組的首地址

int a[4]={1,2,3,4};

int *p=a;

p+1指向數組的下一個元素

p-1指向數組的上一個元素

*(p+1)取得p+1對應的存儲單元的內容

*(a+1)同上

*p++至關於*(p++)

*a++這樣寫是錯誤的,由於a是一個常量

5.一維指針數組

int a=0,b=0,c=0;

int *pa[3]={&a,&b,&c};//數組的值是地址

6.指針變量之間的運算-相減 判斷兩個指針變量之間相隔幾個元素

7.用數組名訪問二維數組

二維數組能夠看作是特殊的一維數組

a;a+1;a+2是行指針

a[i]+j是列指針

第一行的首地址a[1]或a+1;

第二行第一個元素的地址:*(a+1)或者&a[1][0]

a=&a[0]=&a[0][0]=a[0]

8.二維數組指針-指向二維數組的指針

int a[2][3];

int (*p)[3]=a;//定義行數組指針

p=a;

p+1指向第一行

二維數組指針能夠替代數組名使用

9.指針數組和二維數組指針的區別

指針數組int *p[3];//數組裏放的是地址,是多個指針

二維數組指針 int (*p)[3];//指向二維數組的指針,是一個指針

相關文章
相關標籤/搜索