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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言—指针介绍

發布時間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言—指针介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文只是簡單的介紹了指針的一些概念,如果想更詳細的了解指針的知識點可以觀看我的另外兩篇博客。
指針基礎:https://blog.csdn.net/qq_46485161/article/details/115035600
指針高級:https://blog.csdn.net/qq_46485161/article/details/115037692

目錄

  • 指針的重要性
  • 指針的定義
  • 指針的類型
  • 指針的運算
  • 指針和數組的關系

指針的重要性

①表示一些復雜的數據結構;②快速傳遞數據;③使函數返回一個以上的值;
④直接訪問硬件;⑤能方便處理字符串;⑥是理解面向對象語言中引用的基礎;
總結:指針是C語言的靈魂

指針的定義

指針是一個變量,用來存放地址的變量。

★地址:
內存單元的編號
從零開始的非負整數
范圍: 4G
★指針:
①指針就是地址,地址就是指針
②指針變量是存放地址的變量
③指針和指針變量是兩個不同的概念
④敘述時通常把指針變量簡稱為指針,實際它們含義不一樣
⑤指針的本質就是一個操作受限的非負整數

★指針,地址,指針變量之間的區別和聯系:
指針就是地址,地址就是指針;
指針變量是一個變量,它保存了基本類型變量的地址。
如果指針變量p保存了變量a的地址,那么稱作p指向了a,*p 就是變量a。
如果p是一個指針變量,*p 表示了以 p 的內容為地址的變量,就是p指向的變量。

這里列舉一個簡單的示例:

#include <stdio.h> int main() {int *p; //p是變量的名字,int*表示p變量存放的是int類型變量的地址//int*p:不表示定義了一個名字叫做*p的變量//int*p:應該理解為: p是變量名,p變量的數據類型是int*類型,所謂int*類型,實際就是存放int變量地址的類型int a = 2;p = &a; //1.p保存了a的地址,因此p指向a//2.p不是a,a也不是p,修改p的值不影響a的值,修改a的值也不影響p的值//3.如果一個指針變量指向了某個普通變量,則*指針變量完全等同于普通變量//例:若p指向a,則*p=a (*p 和a可互相替換)printf("*p的值為:%d\np保存的地址:%p\n",*p,p);printf("a的值為:%d\na的地址為:%p\n",a,&a);return 0; }

我的運行結果:

指針的類型

(1)基本類型:int 、short、long、float 、double、char
如 int *p;//表示定義一個指針,這個指針指向整型變量,這個指針將存放的是整型變量的地址。

(2)數組指針:指針指向一個數組
int (*a)[10]; //表示指針指向一個int型的長度為10的數組

(3)函數指針:指針指向一個函數
void (*a)(); //表示指針指向一個無參數無返回值的函數

指針的運算

(1)指針+或者-一個數,表示指針加減這個數的類型所占內存的整數倍
如 int *p=a;
p=p+2; // 在VC6.0里面,實際上p加了2 * 4=8

(2)指針減去一個指針,表示兩個指針之間所差的內存單元或者元素個數,兩個指針相加沒有意義

(3)關系運算,如果定義了兩個指針變量p和q,并且都已經初始化了,
如果p==q,則表示p和q指向同一個地址
p>q,則表示p指向高地址而q指向低地址
也經常拿p和NULL做比較,用來表示指針當前的狀態,這在數據結構中應用非常廣泛,不如說鏈表的查找等等

指針和數組的關系

指針和數組關系密切,數組可以通過指針去引用,數組可以存放指針,數組也可以由指針去訪問,指針也能存放數組的地址。

二級指針:指向一級指針地址的指針

如何通過被調函數修改主調函數普通變量的值?
①實參必須為該普通變量的地址&…
②形參必須為指針變量*…
③在被調函數中通過*形參名…的方式就可以修改主調函數相關變量的值

示例:

#include< stdio.h> void swap (int *p, int*q) //形參的名字是p和q,接收實參數據的是p和q,而不是*p和*q {int t; //如果要互換*p和*q的值,則t必須是int,不能是int*t=*p; //p是int*,*p是int*p=*q;*q=t;return; } int main(void) {int a=1;int b=2;swap(&a,&b);/*swap (* p, *q)是錯誤的swap(a, b)也是錯誤的*/printf("a=%d, b=%d\n",a,b);return 0; }

運行結果:
a=2,b=1

總結

以上是生活随笔為你收集整理的C语言—指针介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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