程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話入門之指針用法教程

C說話入門之指針用法教程

編輯:關於C++

C說話入門之指針用法教程。本站提示廣大學習愛好者:(C說話入門之指針用法教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話入門之指針用法教程正文


本文針對C說話初學者具體講述了指針的用法,並配以實例停止解釋。詳細剖析以下:

關於C說話初學者來講,須要明確指針是啥?重點就在一個“指”上。指啥?指的地址。啥地址?內存的地址。

下面解釋就是指針的實質了。

這裡再具體說明下。數據存起來是要存在內存外面的,就是在內存裡圈出一塊地,在這塊地裡放想放的器械。變量關懷的是這塊地裡放的器械,其實不關懷它在內存的哪裡圈的地;而指針則關懷這塊地在內存的哪一個處所,其實不關懷這塊地多年夜,外面存了甚麼器械。

指針怎樣用呢?上面就是根本用法:

int a, b, c;
double f;

int *pt_a = &a, *pt_b = &b, *pt_c = &c;
double *pt_f = &f;

下面兩行聲清楚明了三個int類型的變量a,b,c,一個double類型的變量f。上面就是指針的用法了,聲明變量的時刻只須要在變量後面加上“*”這個符號就解釋了這個變量是指針,而後面的“int”解釋指針指向的內存外面寄存著int類型的變量。

變量和指針的聲明也能夠放到一路:

int a, b, c;
double f;

int other, *pt_a = &a, *pt_b = &b, *pt_c = &c;
double x = 0, *pt_f = &f;

然後就是新的運算符——“&”了。是否是很熟習?沒錯,這個就是scanf外面的誰人“&”。它是取地址符,即用在變量後面應用這個運算符,可以或許取得這個變量在內存外面的地址。由此便可以說明scanf雙引號前面為什麼要應用“&”了,就是將後面依照格局讀出去的數據,依照前面給出的地址直接填進內存裡,所以scanf雙引號前面供給的參數本質上其實不是願望賦值的變量,而是願望保留數據的地址。所以,例如假如有int類型的變量a,同時有指向它的指針pt,那末上面兩句是等效的:

scanf("%d", &a);
scanf("%d", pt);

回到指針,接上去就是修正指針指向變量的值了,怎樣弄呢?上面就是例子:

int a;
int *pt = &a;
*pt = 123; // 該語句同等於 a = 123;

不要把“*”給忘了哈。

至於這個“*”符號,可以這麼懂得:須要用到指針指向的內容時,加上“*”,此時它同等於一個變量;只是須要指針的地址時,不須要加“*”,此時它代表內存的地址。

而指針也能夠轉變它指向的地址:

int a, b, c;
int *pt_a = &a, *pt_b = &b;
pt_b = &c;
pt_a = pt_b;

許多教材都在強調野指針的成績,甚麼叫野指針?呃……可以叫做“撒潑”的指針。甚麼意思呢?舉個例子,假如聲清楚明了一個指針pt,而沒讓他指向任何變量,那末它指向哪裡呢?謎底是:不肯定,全部內存哪裡都有能夠被它指到。假如此時修正它指向的內容,而它正好指向了體系某個症結的過程……那效果就比擬嚴重了。所以指針用之前必定讓它指導器械。假如想讓它甚麼都不指,怎樣辦?很簡略,指向NULL便可。

這就是指針了。能夠看完許多人會認為原來用變量你又加了個指針指不是更費事?我要說的是,這只是最根本的用法。C說話的數組中,還有一些龐雜的數據構造都須要用到指針。所以這些基本的器械照樣有需要加以闇練控制的。

願望本文所述對年夜家C說話法式設計的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved