C語言 陣列和指標

2022-05-18 05:57:22 字數 2615 閱讀 3101

c語言之我個人所知:

1.首先c語言是乙個面向過程的程式語言是各位爺都知道的。

那我們就要思考了,陣列是啥吧(#`o′)?

那好我們來看一下簡單的c語言程式是怎樣編寫陣列的:

#include//

標頭檔案包含

intmain() ;

for (int i = 0; i < 5; i++)

return

0;}

呀,為什麼陣列名在框框裡面可以執行呢?為什麼i=0,不等於1呢?好奇怪呀?

列印結果:

&name[0]=009af920

&0[name]=009af920

&name[1]=009af924

&1[name]=009af924

&name[2]=009af928

&2[name]=009af928

&name[3]=009af92c

&3[name]=009af92c

&name[4]=009af930

&4[name]= 009af930

根據上述結果:那我們就先說一下為啥陣列的下表是從零開始不是從1開始且&i[name]為什麼可以執行的吧:

我們首先要明白陣列名的二義性:

首先陣列是具有相同型別的若干變數有序的組織以便處理的元素集合!這元素也可以包括陣列(*維陣列),結構體

說白了陣列是乙個具有相同型別且有序的構造型別

陣列名充當訪問資料成員的首位址

#includeint

main() ;

printf(

"name:%p\n

",name);

return0;

}

**列印結果**: 

name:012ff810
這就說明陣列名是陣列的唯一識別符號 !

好,根據上述我們得知了陣列名可以充當是首位址,那麼我們又知道了陣列是由若干個相同型別的元素組成的。我們大家把他們結合起來會得到什麼呢?

當name[0]時: 是不是可以這麼想我們在name的基礎上移動了0個呢?畢竟name本身就是第乙個元素啊!以此類推是不是就很好解釋了呢?5個元素,但是i<5;

進入下乙個話題(&i[name]):

首先咱要知道[ ]這對框框是啥?_?

[ ]我們大家通常稱為下標運算子。

可是他其實還有其他稱呼哦(๑•ᴗ•๑

)那就是【**基址變址運算子**】

簡單點講就是:i[name]根據name這個基址按照移動i個步長

基本的資料型別都是怎樣建立和儲存的

首先我們知道資料型別的定義是:型別+變數名

但其實在函式內部的變數在型別前面還有乙個叫做儲存修飾符的

東東:auto

這個東西的作用是告訴計算機將該變數是儲存在棧裡面的。

簡單點說:就是在函式內部的變數是什麼時候呼叫什麼時候生成,呼叫完之後就自動銷毀

這個看怎麼感覺有點像內什麼就不扯遠了(ˉ▽ˉ;)…

說完了函式內部的變數那咱就順便說說全域性變數吧:

全域性變數儲存在記憶體的全域性區中,占用靜態的儲存單元。說到靜態的儲存單元,這裡還要提一下全域性變數分為:全域性變數和靜態全域性變數。

簡單點說:就是全域性變數不管你調不呼叫一直都在!並且占用空間

指標的基本介紹

什麼是指標!
我打個比方指標就像老王,他家裡有你家鑰匙,它可以通過鑰匙去你家然後.⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄就不可描述了,請自行腦補!

>二級指標

通過上述我們就可以順理成章的想到所謂的二級指標就是在老王的基礎上增加了乙個老李而已,也就是說老李家有老王家的鑰匙,然後老李去老王家拿鑰匙去你家

#includeint

main()

**列印結果**:

pp裡面的值:00b3f7c4

i裡面的值:

00000000

p裡面的值:00b3f7dc

pp裡面的值:00b3f7d0

從上述結果:我們發現了乙個規律就是p裡面儲存的是i的位址,pp裡面儲存的是p的位址,我們可以通過號來取裡面的值乙個號是取本身的儲存的值,倆*號可以取本身儲存的值得下乙個值。誒,就很神奇 !

好了,現在開始講講兩個的聯絡吧

```c

int **p=null;

```不管你信與不信,這可以說是乙個二維陣列,不信,用malloc理解下

```c

p = (int**)malloc(sizeof(int*)*(n));

for(int i = 0; i < n; i++)

```**畫圖理解為:**

是不是很像二維陣列呢?

*具體可以試試判斷他們的位址是否一樣。*

C語言 指標陣列和指標陣列

本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...

C語言陣列和指標

1.陣列和指標的宣告 1.指向整數的指標宣告 int x 2.整數陣列宣告 int y 2.如果把int mango 100 用int mango來使用,就會發生型別不匹配錯誤 乙個是指標,乙個數陣列名 3.宣告和定義 1.定義只能進行一次,只能出現在乙個地方。定義相當於特殊的宣告,它為物件分配記憶...

c語言 陣列和指標

指標可以理解為乙個變數,是乙個專門用來存放位址的變數。int ptr null 整型指標,內容為空。char ptr null char型指標,內容為空。float ptr null 浮點型指標,內容為空。可如下使用 int a 10 int ptr a char指標解引用只能訪問乙個位元組大小,而...