C 學習筆記之陣列 函式 指標

2021-10-10 07:58:49 字數 4250 閱讀 9832

3.二維陣列

二、函式

三、指標

所謂陣列,就是乙個集合,裡面存放了相同型別的資料元素

特點1:陣列中的每個資料元素都是相同的資料型別

特點2:陣列是由連續的記憶體位置組成的

1.資料型別 陣列名 [ 陣列長度 ];

2.資料型別 陣列名 [ 陣列長度] = ;

3.資料型別 陣列名 [ ] =;

用途

1.可以統計整個陣列在記憶體中的長度

2.可以獲取陣列在記憶體中的首位址

**如下(示例):

int arr[5]

=;cout <<

"整個陣列占用的記憶體空間:"

<<

sizeof

(arr)

cout <<

"每個元素占用的記憶體空間:"

<<

sizeof

(arr[0]

)<< endl;

//4 cout <<

"陣列的元素個數:"

<<

sizeof

(arr)

/sizeof

(arr[0]

)

cout <<

"陣列首位址為:"

<< arr

cout <<

"陣列中第乙個元素位址為:"

<<

&arr[0]

cout <<

"陣列中第二個元素位址為:"

<<

&arr[1]

有四種方式:

1.·資料型別 陣列名 [ 行數 ] [ 列數 ];

2.資料型別 陣列名 [ 行數 ] [ 列數 ] = ,} ;

3.資料型別 陣列名 [ 行數 ] [ 列數 ] = ;

4.資料型別 陣列名 [ ] [ 列數 ] = ;

第二種更加直觀,提高**可讀性;

函式的定義一般有5個步驟:

返回值型別

函式名引數列表

函式體語句

return xx

**如下(示例):

返回值型別 函式名(int a,

int b)

功能:使用定義好的函式

語法:函式名(引數)

無參無返

有參無返

無參有返

有參有返

作用:讓**結構更加清晰

函式分檔案編寫一般有4個步驟:

1.建立字尾名為.h的標頭檔案

2.建立字尾名為.cpp的原始檔

3.在標頭檔案中寫函式的宣告

4.在原始檔中寫函式的定義

//標頭檔案swap.h

#include

using

namespace std;

//函式宣告

void

swap

(int a,

int b)

;

#include

"swap.h"

//函式的定義

void

swap

(int a,

int b)

#

include

#include

"swap.h"

using

namespace std;

intmain()

非靜態成員函式後面加const,表示成員函式隱含傳入的this指標為const指標,在該成員函式中,不能修改所在類中的成員變數

但可以修改有mutable修飾的成員

加到非成員函式或靜態成員後面會產生編譯錯誤

指標變數定義語法:資料型別 * 變數名 ;

**如下(示例):

#

include

using

namespace std;

intmain()

不管是什麼資料型別

32位作業系統下:占用4個位元組空間。

64位作業系統下:占用8個位元組空間。

int a =10;

//定義指標

int* p;

//給指標賦值

p =&a; cout <<

"sizeof(int *):"

<<

sizeof

(p)<< endl;

//4

空指標:指標變數指向記憶體中編號為0的空間

用途:初始化指標變數

注意:空指標指向的記憶體是不可以訪問的

//空指標

int* p =

null

;//空指標不能訪問,但可以初始化指標變數

//0~255之間的記憶體編號是系統占用,因此不可以訪問

野指標:指標變數指向非法的記憶體空間

//指標變數指向記憶體位址編號為0x1100的空間

int* p =

(int*)

0x1100

;//訪問野指標會報錯

cout <<

*p << endl;

//: 讀取訪問許可權衝突。

總結:空指標和野指標都不是我們申請的空間,因此不能訪問。

有三種情況:

const修飾指標 —常量指標

const修飾常量 —指標常量

const既修飾指標,又修飾常量

int a =10;

int b =20;

修飾指標

//指標指向的值不可以改,指標的指向可以改

const

int* p1 =

&a;//則*p1 = 20;是乙個錯誤

cout << p1 << endl;

//輸出的是位址

cout <<

*p1 << endl;

//輸出的是10

修飾常量

//指標指向的值可以改,指標的指向不可以改

int*

const p2 =

&b;*p2 =

100;

//正確

p2 =

&a;//錯誤

既修飾指標又修飾常量

const

int*

const p3 =

&a;//指標的指向和指向值都不可以改

作用:利用指標訪問陣列元素

int arr=

; cout <<

"陣列的第乙個元素:"

<< arr[0]

<< endl;

int* p = arr;

//arr就是陣列的首位址

cout <<

"利用指標訪問第乙個元素:"

<<

*p << endl;

cout <<

"利用指標訪問第二個元素:"

<<

*(p +1)

<< endl;

作用:利用指標做函式引數,可以修改實參的值

#

include

using

namespace std;

//值傳遞

void

swap1

(int a,

int b)

//位址傳遞

void

swap2

(int

* p1,

int* p2)

intmain()

C語言學習筆記之函式指標與函式指標陣列

指標函式 本質是乙個函式 是乙個返回指標型別的函式 int sum 函式指標 本質是乙個指標 是乙個指向函式的指標 int p int,int sum p 5,6 int sum int a,int b 指標陣列 陣列內儲存的都是指標 int p 2 int a 20 int arr 5 int p...

C 學習筆記 函式指標

1 c 指標函式基礎 函式是有位址的,它表示函式執行的入口。我們知道位址值並沒有用,但是可以將位址值當做實參傳入到其它函式中,這可以在不同的時期呼叫不同的函式。函式指標包括三點 如何獲取函式位址,如何申明函式指標,如何呼叫函式。簡單示例 include double betsy int double...

C 學習筆記 函式指標與指標函式

函式指標 指向函式的指標,首先它是指標變數 同指向乙個整形變數 字元 陣列一樣 其次它指向乙個函式 位址 宣告 函式型別 指標變數名 形參列表 函式型別,指明函式的返回型別,由於 優先順序高於 所以指標變數名外的括號不能少,後面形參列表表示指標變數指向的函式所帶的引數列表。上面相當於用函式指標p,代...