本文只是簡單的介紹了指標的一些概念,如果想更詳細的了解指標的知識點可以**我的另外兩篇部落格。指標基礎:
指標高階:
①表示一些複雜的資料結構;②快速傳遞資料;③使函式返回乙個以上的值;
④直接訪問硬體;⑤能方便處理字串;⑥是理解物件導向語言中引用的基礎;
總結:指標是c語言的靈魂
指標是乙個變數,用來存放位址的變數。
記憶體單元的編號
從零開始的非負整數
範圍: 4g
★指標:
①指標就是位址,位址就是指標
②指標變數是存放位址的變數
③指標和指標變數是兩個不同的概念
④敘述時通常把指標變數簡稱為指標,實際它們含義不一樣
⑤指標的本質就是乙個操作受限的非負整數
指標就是位址,位址就是指標;
指標變數是乙個變數,它儲存了基本型別變數的位址。
如果指標變數p儲存了變數a的位址,那麼稱作p指向了a,*p 就是變數a。
如果p是乙個指標變數,*p 表示了以 p 的內容為位址的變數,就是p指向的變數。
這裡列舉乙個簡單的示例:
#include
intmain()
(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
intmain
(void
)
執行結果:
a=2,b=1
C語言指標函式和函式指標詳細介紹
原文在此 指標與函式 另外,附上一段 learn c the hard way 18章節的 include include include include our old friend die from ex17.void die const char message else exit 1 a t...
C語言指標函式和函式指標詳細介紹
當乙個函式宣告其返回值為乙個指標時,實際上就是返回乙個位址給呼叫函式,以用於需要指標或位址的表示式中。格式 型別說明符 函式名 引數 當然了,由於返回的是乙個位址,所以型別說明符一般都是int。例如 int getdate int aaa int,int 函式返回的是乙個位址值,經常使用在返回陣列的...
C指標介紹
參考 舉例 int p 整型變數 int p 整型型別的指標 int p 3 整型型別的指標陣列 int p 3 指向整型陣列的指標 int p 指向整型指標的指標 int p int 函式,入參是整型數,返回值是整型數 int p int 函式指標,指向函式的指標,入參是整型,返回值是整型 int...