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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

指针基本概念分析

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指针基本概念分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 指針
      • 1.1 *號的意義
      • 1.2 傳值調用與傳址調用
    • 2 指針的運算與比較
      • 2.1 指針與整數的運算
      • 2.2 指針之間的運算
      • 2.3 指針的比較
    • 3 二級指針
      • 3.1 指向指針的指針

1 指針

1.1 *號的意義

*號:

  • 在指針聲明時,*號表示所聲明的變量為指針。
  • 在指針使用時,*號表示取指針所指向的內存空間中的值。

    小貼士:

    對于指針我們需要知道:
  • 指針是C語言中一種特別的變量。
  • 指針所保存的值是內存的地址。
  • 可以通過修改指針修改內存中的任意地址內容。

1.2 傳值調用與傳址調用

傳值調用與傳址調用:

  • 指針是變量,因此可以聲明指針參數。
  • 當一個函數體內部需要改變實參的值,則需要使用指針參數。
  • 函數調用時實參值將復制到形參。
  • 指針適用于復雜數據類型作為參數的函數中。
#include <stdio.h>int swap(int* a, int* b) {int c = *a;*a = *b;*b = c; }int main() {int aa = 1;int bb = 2;printf("aa = %d, bb = %d\n", aa, bb);swap(&aa, &bb);printf("aa = %d, bb = %d\n", aa, bb);return 0; }

2 指針的運算與比較

2.1 指針與整數的運算

指針是一種特殊的變量,與整數的運算規則如下:

結論: 當指針p指向一個同類型的數組的元素時,p+1將指向當前元素的下一個元素;p-1將指向當前元素的上一個元素。

2.2 指針之間的運算

指針之間只支持減法運算,參與減法運算的指針類型必須相同。

注意:

  • 只有當兩個指針指向同一個數組中的元素時,指針相減才有意義,其意義為指針所指元素的下標差。
  • 當兩個指針指向的元素不在同一個數組中時,結果未定義。
  • 2.3 指針的比較

    指針的比較:

    • 指針可以進行關系運算(<,<=,>,>=)。
    • 指針關系運算的前提是同時指向同一個數組中的元素。
    • 任意兩個指針之間的比較運算(==、!=)無限制。
    • 參與比較運算的指針類型必須相同。

    指針運算示例:

    #include <stdio.h>int main() {char s1[] = {'H', 'e', 'l', 'l', 'o'};int i = 0;char s2[] = {'W', 'o', 'r', 'l', 'd'};char* p0 = s1;char* p1 = &s1[3];char* p2 = s2;int* p = &i;printf("%d\n", p0 - p1);printf("%d\n", p0 + p2); // errorprintf("%d\n", p0 - p2); // 結果未定義printf("%d\n", p0 - p); // errorprintf("%d\n", p0 * p2); // errorprintf("%d\n", p0 / p2); // errorreturn 0; }

    指針運算的應用:

    #include <stdio.h>#define DIM(a) (sizeof(a) / sizeof(*a))int main() {char s[] = {'H', 'e', 'l', 'l', 'o'};char* pBegin = s;char* pEnd = s + DIM(s); // Key pointchar* p = NULL;printf("pBegin = %p\n", pBegin);printf("pEnd = %p\n", pEnd);printf("Size: %d\n", pEnd - pBegin);for(p=pBegin; p<pEnd; p++){printf("%c", *p);}printf("\n");return 0; }

    3 二級指針

    3.1 指向指針的指針

    基本概念:

    • 指針的本質是變量。
    • 指針會占用一定的內存空間。
    • 可以定義指針的指針來保存指針變量的地址值。

    為什么需要指向指針的指針?

    • 指針在本質上也是變量。
    • 對于指針也同樣存在傳值調用與傳址調用。

    二級指針的應用:重置動態空間大小

    #include <stdio.h> #include <malloc.h>int reset(char**p, int size, int new_size) {int ret = 1;int i = 0;int len = 0;char* pt = NULL;char* tmp = NULL;char* pp = *p;if( (p != NULL) && (new_size > 0) ){pt = (char*)malloc(new_size);tmp = pt;len = (size < new_size) ? size : new_size;for(i=0; i<len; i++){*tmp++ = *pp++; }free(*p);*p = pt;}else{ret = 0;}return ret; }int main() {char* p = (char*)malloc(5);printf("%p\n", p);if( reset(&p, 5, 3) ){printf("%p\n", p);}free(p);return 0; }

    參考資料:

  • C語言進階剖析教程
  • 總結

    以上是生活随笔為你收集整理的指针基本概念分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 亚洲天堂av一区二区三区 | 免费成人美女女电影 | 国产精品免费av一区二区三区 | 日韩在线播放av | 亚洲性图一区二区三区 | 一区二区在线免费看 | 男操女免费网站 | 日本黄在线观看 | 18一20岁毛毛片 | 91n视频| 黄色av在 | 亚洲狼人社区 | 亚洲男人的天堂在线视频 | 综合天堂av久久久久久久 | 全黄性性激高免费视频 | 在线观看国产精品视频 | 日韩av片免费观看 | 波多野结衣潜藏淫欲 | 激情瑟瑟 | 97精品人妻一区二区三区蜜桃 | 97超碰国产精品无码蜜芽 | 男人操女人免费 | 爱爱色图| av大片免费 | japanese在线观看| 欧美性猛交 | 国产午夜精品久久久久久久 | 91九色国产视频 | 中文字幕福利 | 蜜桃av噜噜一区二区三区网址 | 欧洲女性下面有没有毛发 | 99久久久无码国产精品性青椒 | 国产精品人妖 | 最近中文字幕在线mv视频在线 | 国产精品精品久久久久久 | 久久在线免费 | 成人黄色电影在线 | 很黄很污的视频 | 国产一区二区福利 | 色婷婷网 | 毛片随便看 | 成人av电影在线观看 | 国产午夜福利片 | 一级全黄裸体免费视频 | 天天摸日日摸 | 久久精品无码一区二区三区免费 | 在线观看污污视频 | 国产chinesehd天美传媒 | 欧美午夜激情视频 | 美女露胸露尿口 | 日韩乱码一区二区 | 日韩欧美福利视频 | 久久亚洲av成人无码国产电影 | 日韩成人精品一区二区三区 | 黑鬼巨鞭白妞冒白浆 | 欧美99久久精品乱码影视 | 一区视频网站 | 美国免费黄色片 | 韩国不卡av | 亚洲天堂小视频 | 日韩一区二区三区视频 | 三级影片在线播放 | 亚洲永久免费视频 | 小辣椒福利视频导航 | 欧美丰满老熟妇aaaa片 | 久久这里| 波多野结衣视频网站 | 中文字幕在线观看高清 | 国产无遮挡又黄又爽又色 | 精品无码成人久久久久久免费 | 澳门久久久 | 玖玖在线免费视频 | 日本午夜电影 | 日日操网 | 亚洲好视频 | 亚洲一级黄色 | 久久资源在线 | 黄色av网址在线 | 日本久久99 | 日韩精品一区在线观看 | 久久精品国产亚洲av成人 | 欧美精品性视频 | 亚洲欧美色视频 | 国产一级片播放 | 欧美午夜久久 | 亚洲精品999 | 色香蕉视频| jizzzxxxx| 久久动态图 | 男人都懂的网址 | 色中文网 | 国产精品伦理一区二区 | 朝桐光在线观看 | 欧美性生交xxxxx | 中文字幕在线视频精品 | 一区二区高清 | 国产欧美又粗又猛又爽 | 国产精品免费精品一区 | 美女精品网站 |