《c语言从入门到精通》看书笔记——第10章 指针
生活随笔
收集整理的這篇文章主要介紹了
《c语言从入门到精通》看书笔记——第10章 指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、地址與指針
地址:就是內存區中對每個字節的編號
指針:可以看作是內存中的一個地址。在程序中定義了一個變量,在進行編譯時就會給該變量在內存中分配一個地址,通過訪問這個地址可以找到相應的變量,這個變量的地址稱為該變量的“指針”。
如果一個變量專門來存放另一個變量的地址,它就是指針變量。在c語言中專門用來存放內存單元地址的變量類型即指針類型。
2、指針變量:
(1)指針變量的一般形式:類型說明*變量名 ? ? ;其中“*”表示該變量是一個指針變量,變量名即為定義的指針變量名,類型說明便是本指針變量所指向的變量的數據類型。
(2)指針變量的賦值:給指針變量的賦值只能賦予地址。 ? ??
一般形式為:&變量名; ? ??
兩種方法:
1)定義指針變量的同時就進行賦值,例如:int a; int *p=&a;
2)先定義指針變量之后再賦值,例如:int a; int *p; p=&a;
如果先定義完指針變量之后再賦值注意不要加“*”;
(3)指針變量的引用:引用指針變量是對變量進行簡介訪問的一種形式。
對指針變量的引用形式如:*指針變量;其含義是引用指針變量所指向的值。
(4)"&"和"*"運算符
運算符“&”一個返回操作數地址的單目運算符,叫做取地址運算符;
運算符“*”是單目運算符,叫做指針運算符,作用是返回指定地址內的變量的值。
(5)“&*”和“*&”的區別
“&”和“*”的運算符優先級別相同,按自右向左的方向結合。
例如:int a;
p=&a;
"&*p"就是先進行“*”運算,即“*p”相當于變量a;再進行“&”運算,就是說,“&*p”是取a的地址。同理“*&a”就是取變量a所在地址的值,就是變量a;
(6)指針自加自減運算:不同于普通變量的自增自減運算,這里的自增自減是地址的自增自減,加減的值和指針變量的類型有關。
3、一維數組與指針
當定義一個一位數組時,系統會在內存中為該數組分配一個存儲空間,其數組名稱就是數組在內存中的首地址,若再定義一個指針變量,并將數組的首地址傳給指針變量,則該指針就指向了這個一維數組。
4、二維數組與指針
表示二維數組中元素地址的方法:
(1)&a[0][0]既可以看作數組0行0列的首地址,也可以看做二維數組的首地址。&a[m][n]就是第m行n列元素的地址。
(2)a[0]+n表示第0行第n個元素的地址
5、字符串與指針:
訪問一個字符串有兩種方式,一是使用字符數組來存放一個字符串,從而實現對字符串的操作;二是使用字符指針指向一個字符串,此時可不定義數組。
6、字符串數組
字符數組是一個一維數組,而字符串數組是以字符串作為數組元素的數組,可以將其看成一個二維字符數組。
例如:
char country[5][20]=
{
"China",
"Japan",
"Russia",
"Germany",
"Switzerland"
}
字符型數組變量country被定義為含有5個字符串的數組,每個字符串的長度要小于20(這里要考慮字符串最后的\0)。但這樣浪費空間。但是用指針數組就好,不會浪費空間。
指針數組:一個數組,其元素均為指針類型數據,稱為指針數組。也就是說,指針數組中的每一個元素都相當于一個指針變量。
例如:
int i;
char *month[]=
{
"January",
"February"
};
7、指向指針的指針
指向指針的指針變量定義如下:
?類型標識符 **指針變量名;例如:int **p;
其含義為定義一個指針變量p,它指向另一個指針變量,該指針變量又指向另一個基本整型變量。由于指針變量運算符*是自右自左結合,相當于:int *(*p);
8、C語言中實參變量和形參變量之間的數據傳遞是單向的“只傳送”方式。指針變量做函數參數也是如此,調用函數不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。
9、參數字符串的長度是不定的,并且參數字符串的長度不需要統一,且參數的數目也是任意的,并不規定具體個數。
總結
以上是生活随笔為你收集整理的《c语言从入门到精通》看书笔记——第10章 指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《c语言从入门到精通》看书笔记——第9章
- 下一篇: 2016-01-17