日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 一、指針是地址各種類型的數(shù)據(jù)被分配合適的內(nèi)存。比如整形數(shù)據(jù)通常被分配兩個(gè)連續(xù)的存儲(chǔ)單元(字節(jié))存放。對(duì)數(shù)據(jù)的訪問是通過分配給數(shù)據(jù)的內(nèi)存首地址來實(shí)現(xiàn)的。我們稱這些內(nèi)存地址為指針。二、指針變量是

一、指針是地址
各種類型的數(shù)據(jù)被分配合適的內(nèi)存。比如整形數(shù)據(jù)通常被分配兩個(gè)連續(xù)的存儲(chǔ)單元(字節(jié))存放。對(duì)數(shù)據(jù)的訪問是通過分配給數(shù)據(jù)的內(nèi)存首地址來實(shí)現(xiàn)的。我們稱這些內(nèi)存地址為指針。


二、指針變量是存放地址的變量
如果我們定義了一些變量來存放數(shù)據(jù)的地址(指針),這樣的變量就是指針變量。也就是說,指針變量有兩個(gè)特征:首先它作為變量會(huì)分配內(nèi)存空間;其次,它存放的內(nèi)容應(yīng)該是內(nèi)存地址。

比如,當(dāng)我們聲明了一個(gè)整形變量i并且賦予初始值10;同時(shí)我們聲明了一個(gè)整形的指針變量p,將它指向變量i。當(dāng)我們運(yùn)行代碼時(shí),內(nèi)存中可能是這樣的:

i -> |0AH| FFF0H

|00H|FFF1H
|...|
p -> |0F0H | FFFAH

|0FFH|FFFBH

三、一維數(shù)組是指針,它指向數(shù)組首(元素)地址
1. 代碼int a[3] = {1, 2, 3}; 定義了一個(gè)包含3個(gè)元素的整形一維數(shù)組。在引用數(shù)組元素時(shí),我們使用“a[下標(biāo)]”的格式;在引用數(shù)組時(shí),我們直接使用數(shù)組名a。而數(shù)組名a表示(指向)數(shù)組首元素的地址(指針)

測(cè)試代碼:
int a[3] = {1, 2, 3};
printf("a = %xn", a);
printf("&a[0] = %xn", &a[0]);

執(zhí)行結(jié)果:
a= fff0
&a[0] = fff0


2. 由于一維數(shù)組是指針,所以可以按照指針來操作它: 一維數(shù)組指向數(shù)組首元素,所以在一維數(shù)組前加一元操作符“*”可以返回第一個(gè)元素的值。比如:


測(cè)試代碼:
int a[3] = {1, 2, 3};
printf("*a = %xn", *a);
printf("a[0] = %xn", a[0]);

執(zhí)行結(jié)果:
*a= 1
a[0] = 1


四、一維數(shù)組(名)不是指針變量
上面的測(cè)試代碼中,數(shù)組名a是一個(gè)指針變量嗎? 如果數(shù)組名a是一個(gè)指針變量,那么,它在應(yīng)該會(huì)被分配獨(dú)立的存儲(chǔ)空間(有自己的地址),并且它的值應(yīng)該是數(shù)組首地址,如圖:


指針變量a -> | 0F0H | xxxxH

| 0FFH | yyyyH

...
元素a[0]-> |01H| FFF0H

|00H| FFF1H
|02H| FFF2H
|00H| FFF3H
|03H| FFF4H
|00H| FFF5H

下面,我們?cè)僮鲆粋€(gè)試驗(yàn):
int a[3] = {1, 2, 3};
printf("&a = %xn", &a);
printf("a= %xn", a);
printf("*a = %xn", *a);
printf("a[0] = %xn", a[0]);

執(zhí)行結(jié)果:
&a = fff0
a= fff0
*a = fff0
a[0] = 1


執(zhí)行結(jié)果很奇怪,如果按照結(jié)果畫出內(nèi)存示意圖,似乎是這樣的:


指針變量a -> | 0F0H |FFF0H

| 0FFH |FFF1H

...
元素a[0]-> |01H|FFF0H

|00H|FFF1H
|02H| FFF2H
|00H| FFF3H
|03H| FFF4H
|00H| FFF5H


奇怪在哪里? ------ 怎么可能有兩個(gè)內(nèi)存空間的地址相同呢(FFF0H)? 當(dāng)然不可能,這正好說明數(shù)組名a并不是一個(gè)指針變量因?yàn)樗鼪]有自己的存貯空間。這些奇怪的結(jié)果是編譯器在編譯期間根據(jù)另外的規(guī)則做出的處理。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在計(jì)算機(jī)編程領(lǐng)域,指針是C/C++等語言中強(qiáng)大而靈活的工具,而指針?biāo)阈g(shù)則是挖掘指針潛力的關(guān)鍵技術(shù)之一。其中,利用偏移量進(jìn)行數(shù)組操作是指針?biāo)阈g(shù)的典型應(yīng)用,它能顯著提升代碼的執(zhí)行效率,為高性能計(jì)算開辟新路徑。

關(guān)鍵字: 指針?biāo)阈g(shù) 指針 C語言

數(shù)組和指針在使用上還有一些區(qū)別。首先,數(shù)組名代表整個(gè)數(shù)組,可以用來初始化其他數(shù)組,但數(shù)組名不能被賦值或自增。其次,數(shù)組在函數(shù)調(diào)用時(shí),傳遞的是數(shù)組的地址,而不是整個(gè)數(shù)組。指針可以被賦值或自增。指針還可以用來動(dòng)態(tài)分配內(nèi)存空間...

關(guān)鍵字: 數(shù)組 指針

在C語言編程中,指針是一個(gè)強(qiáng)大且靈活的工具,它允許直接訪問和操作內(nèi)存地址。然而,正是這種直接性使得指針成為了一個(gè)容易出錯(cuò)和難以調(diào)試的特性。本文將深入解析C語言中的指針概念,探討其工作原理,并揭示常見的指針陷阱及其避免方法...

關(guān)鍵字: C語言 指針

引用與指針在帶來便利的也會(huì)因?yàn)槭褂貌划?dāng)而導(dǎo)致一些難以調(diào)試的錯(cuò)誤。比如,引用的一個(gè)常見問題是循環(huán)引用,它可能會(huì)導(dǎo)致程序出現(xiàn)內(nèi)存泄漏的風(fēng)險(xiǎn)。而指針則更為復(fù)雜,容易出現(xiàn)懸空指針的情況,即指針指向的內(nèi)存已經(jīng)被釋放,但指針本身還保...

關(guān)鍵字: 引用 指針

指針傳遞參數(shù)本質(zhì)上是值傳遞的方式,它所傳遞的是一個(gè)地址值。值傳遞過程中,被調(diào)函數(shù)的形式參數(shù)作為被調(diào)函數(shù)的局部變量處理,即在棧中開辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進(jìn)來的實(shí)參的值,從而成為了實(shí)參的一個(gè)副本。值傳遞的特點(diǎn)是被調(diào)函...

關(guān)鍵字: 指針 引用

數(shù)據(jù)結(jié)構(gòu)是抽象的概念,沒有語言之別,就像是設(shè)計(jì)模式一樣,是一種抽象的思想,用任何語言的代碼都能構(gòu)建出來。而我們的python中的字符串,列表,字典,元祖,集合都是基本數(shù)據(jù)類型,他們是依附于語言存在的,不同的語言有不同的基...

關(guān)鍵字: 數(shù)組 堆棧

在MCU(微控制器單元)軟件開發(fā)中,指針作為一種強(qiáng)大的工具,能夠顯著提高程序的靈活性和性能。然而,指針的使用也伴隨著一系列潛在的風(fēng)險(xiǎn)和陷阱,特別是在資源受限的嵌入式系統(tǒng)中。本文將深入探討MCU軟件開發(fā)中使用指針時(shí)可能遇到...

關(guān)鍵字: MCU 軟件開發(fā) 指針

懸空指針(Dangling Pointer)和野指針(Wild Pointer)是C語言中指針使用不當(dāng)時(shí)常見的兩種錯(cuò)誤情況。懸空指針產(chǎn)生于指針指向的內(nèi)存被釋放后,該指針未置為空、而仍指向原地址,如此會(huì)導(dǎo)致潛在的安全隱患和...

關(guān)鍵字: C語言 指針

作為嵌入式工程師,寫一個(gè)效率高效,思路清晰的C語言程序是我們的終極目標(biāo),那么,怎么才能寫好這樣的程序呢?首先,我們要用C語言的思維方式來進(jìn)行程序的構(gòu)架構(gòu)建;其次,要有良好的C語言算法基礎(chǔ),以此來實(shí)現(xiàn)程序的邏輯構(gòu)架;最后,...

關(guān)鍵字: C語言 指針

指針和內(nèi)存泄漏對(duì)某些程序員來說似乎是一種威懾,但是,一旦你了解了指針和相關(guān)內(nèi)存操作的基礎(chǔ)知識(shí),它們將成為你在 C 中擁有的最強(qiáng)大的工具。

關(guān)鍵字: C語言 指針
關(guān)閉