日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单易懂的方式去看C语言精华--指针

發布時間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单易懂的方式去看C语言精华--指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單易懂的方式去看C語言精華–指針

學c語言時間也不短了,但是相必很多人頭疼C語言中指針的用法,下面作為一個幾刷C語言的一點感想。

變量訪問方式

那就需要從變量訪問說起,變量訪問方式有兩種:
1.變量名
2.地址訪問
變量名很容易理解,那么地址如何實現訪問變量

*0x0001

其中,*就是取出地址0x0001的變量值a,相反,&就是取地址(取變量的地址)。

指針變量使用

c語言中*p就是指針,p就是地址,也就是說指針就是地址。
其定義及初始化

int *p; int* p;

初始化

int* p = &a; int* p; p = &a;

在這里需要注意,*在定義指針時僅作為標識符;其他情況還是取內容。

指針類型

指針具有類型,其類型主要體現在指針偏移過程中

int *p; p++; printf("int類型的地址: %p", p);char *p; p++; printf("char類型的地址: %p", p);

p++后地址分別加4和1,就是因為指針類型一個為int,代表4字節,一個為char,為單字節。

指針哪里會用呢?

作為C語言特有的功能,指針可謂是一把利器,但我們什么時候會碰到呢?主要有兩種

  • 指定內存的位置 ,這是其他編程語言不具備的,例如我想要講變量a保存在地址為0x0060ff00的內存中
  • int *p = (int *)0x0060ff00;

    該句即可實現。
    2. 函數調用中實現變量修改,在此舉兩個例子說明

    //eg.1 void swap(int a, int b) {int tem;tem = a;a = b;b = tem; }int main() {int a=5, b=10;swap(a, b);printf("a的值為%d,b的值為%d\n", a, b); } //eg.2 void swap(int *a, int *b) {int tem;tem = *a;*a = *b;*b = tem; }int main() {int a=5, b=10;swap(&a, &b);printf("a的值為%d,b的值為%d\n", a, b); }

    通過上邊兩個例子的輸出就可以看出,eg.1輸出為“a的值為5,b的值為10”,eg.1輸出為“a的值為10,b的值為5”。

    指針數組和數組指針

    初學者都會感覺這個有點難區分
    那么怎么區分呢?
    指針數組,顧名思義,首先是一個數組,然后數組的元素是指針。
    說明形式為:type pointer_array[constant1][constant2]…[constantn];
    例如:int pai[3]; 由于‘’是自右向左結合,因此從右向左看,首先看到[4]說明是一個數組,是一個包含4個元素的數組,然后看到‘’,顯然是指針類型,由此可以看出數組中存放的是指針而不是一般的類型。

    那么數組指針:指向一個數組的指針。 說明形式為:type (pointer_array)[constant1][constant2]…[constantn];
    這里的圓括號是必須就將這是由于方括號[],較指針說明符“”的優先級高,若無此圓括號,編譯器將把上述說明解釋成成了一個數組指針。
    例如:int (*ap)[2];

    總結

    以上是生活随笔為你收集整理的简单易懂的方式去看C语言精华--指针的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。