C部落格作業05 指標

2022-08-10 05:06:10 字數 2899 閱讀 2720

0.展示pta總分(0----2)

展示關於「指標題目集」分數截圖。

定義指標變數的一般形式為:*型別名 指標變數名;

int *p;
在定義指標變數時,要注意以下幾點。

指標變數名是乙個識別符號,要按照c識別符號的命名規則對指標變數進行命名。

指標變數的資料型別是它所指向的變數的型別,一般情況下一旦指標變數的型別被確定後,他只能指向同種型別的變數。

在定義指標變數時需要使用指標宣告符 * ,但指標宣告符並不是指標的組成部分。例如:定義int p;說明p是指標變數,而不是p;

取位址運算

int *p, a = 3;

p = &a;

將整型變數a的位址賦給整型指標p,使指標p指向變數a。也就是說,用運算子&取變數a的位址,並將這個位址值作為指標p的值,使指標p指向變數a。

表示式*p = p + 1、++p和(p)++,都是將指標p所指向變數的值加1。而表示式p++等價於(p++),先取p的值作為表示式的值,在將指標p的值加1,運算後,p不再指向變數a。

2. 賦值運算

int a = 3, *p1, *p2;	/* 定義整型變數指標p1和p2 */

p1 = &a; /* 使指標p1指向整型變數a */

p2 = p1;

void merge(int* a, int m, int* b, int n);
包括指標如何指向字串、字串相關函式及函式**原型的理解、字串相關函式用法(擴充套件課堂未介紹內容)

char * x = "abcd"; //宣告乙個字元型別的指標x 指向乙個字串
1、指標型別為char ,指標的型別決定了這個指標指向資料的型別;

2、指標變數 x 自身是有變數位址的,也就是說 x 變數作為乙個變數,有自己的記憶體位址。

那麼,這裡的賦值語句可以理解為 指標變數x的記憶體位址上儲存了乙個字元型別的位址。

具體格式是什麼,注意事項。

1、當使用指標做為函式的返回值時,主函式處的char *p;將獲得呼叫函式char *pf;的值,即乙個位址值,如oxae72。此時需要我們注意的是該位址值所指向的空間是否存在(即已向作業系統宣告註冊,不會被釋放,即可能被其他操作修改);

2、使用棧記憶體返回指標是明顯錯誤的,因為棧記憶體將在呼叫結束後自動釋放,從而主函式使用該位址空間將很危險。

為什麼要動態記憶體分配,堆區和棧區區別。動態記憶體分配相關函式及用法。舉例為多個字串做動態記憶體要如何分配。

棧區(stack): 函式執行時分配,函式結束時釋放。由編譯器自動分配釋放,存放為執行函式而分配的區域性變數、函式引數、返回資料、返回位址等。

堆區(heap): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os(作業系統)**。分配方式類似於鍊錶。

動態記憶體分配中的free()是釋放的意思

釋放是修改了申請的記憶體的使用狀態,從可用變成不可用,裡面的資料還在,但是使用權已經交還給系統

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

free(p);

free(p);

定義 :char *p[n];

這是乙個p陣列,陣列元素包括p[0]、p[1]、p[2]...p[n-1],分別用來存放乙個指標位址,而這些位址指向的是乙個char型的字元。

可以將二維陣列賦給一指標陣列:

char *p[3];//此陣列每乙個元素都是乙個指標

char a[3][4];

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

這裡char *p[3] 表示乙個一維陣列內存放著三個指標變數p[0]、p[1]、p[2],分別指向a[0],a[[1],a[2]所在的行

二級指標:指向指標的指標。

一級指標與二級指標的比較:一級指標的值為位址,位址需要空間來存放,是空間就具有位址

,二級指標就是為了獲取這一空間的位址。一級指標所關聯的是其值(乙個位址)名下空間裡

的資料,這個資料可以是任意型別並做任意用途,但二級指標所關聯的資料只有乙個型別乙個

用途,就是位址。

二級指標分為指向指標變數的指標和指向陣列的指標。

例:

int main()

定義格式、主要用法。

int *ptr=*a;
行指標:指的是一整行,不指向具體元素。

列指標:指的是一行中某個具體元素。

可以將列指標理解為行指標的具體元素,行指標理解為列指標的位址。

那麼兩個概念之間的具體轉換是:

*行指標----列指標

&列指標----行指標

例:用列指標輸出二維陣列。

#include

void main()

; int *p= a[0]; // 列指標的定義法

for(; p < a[0] + 12; p++)

return;

}

貼圖展示**,不要複製。

選擇合併2個有序陣列這題介紹做法。

C部落格作業05 指標

展示關於 指標題目集 分數截圖。每個知識點具體展開介紹。包括指標如何指向字串 字串相關函式及函式 原型的理解 字串相關函式用法 擴充套件課堂未介紹內容 具體格式是什麼,注意事項。為什麼要動態記憶體分配,堆區和棧區區別。動態記憶體分配相關函式及用法。舉例為多個字串做動態記憶體要如何分配。多個字串用二維...

C部落格作業05 指標

格式 datatype name value 定義格式 int p 定義,定義時必須帶 float p1 a char p2 c p1 b p2 d 賦值,在定義的同時賦值需要帶,單獨賦值時不能帶,因為p代表指標變數的值,即位址。p代表指標指標變數指向的變數的值。乙個函式在編譯時被分派乙個入口位址,...

C部落格作業05 指標

1.指標做迴圈變數做法 基本做法如下 int a 10 int p p a 指標指向a陣列的首位址 fgets a,10,stdin for p a p 0 p n p 2.字元指標如何表示字串 基本做法如下 char str abc char p for p str p 0 p n p 3.動態記...