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.動態記憶體分配
1.動態記憶體分配的步驟
(1)了解需要多少記憶體空間。
(2)利用c語言提供的動態分配函式來分配所需要的儲存空間。
(3)使指標指向獲得的記憶體空間,以便用指標在該空間內實施運算或操作。
(4)當使用完畢記憶體後,釋放這一空間。
2.動態儲存分配函式
1.malloc()
函式原型是 :void * malloc(unsigned size)
2.calloc()
函式原型是 :void * calloc(unsigned n,unsigned size)
兩者的區別僅在於calloc函式在分配後還把儲存塊裡全部初始化為0,而malloc函式不會。
3.動態儲存釋放函式free()
函式原型為 :void free (void * ptr)
這個函式十分關鍵卻又經常被人遺忘,故最好在使用動態儲存分配函式時,自動先在後面補上free函式。
4.指標陣列及其應用
1.指標陣列的定義
一維指標陣列定義的一般格式為:
型別名 *陣列名[陣列長度];
如char * color [5];
2.指標陣列的應用
可以用指標陣列處理多個字串
如課本p269頁char*pcolor=;
4.二級指標、行指標
1.二級指標
二級指標,也稱指向指標,一般定義為:
型別名**變數名;
2.行指標
行指標出現在二維陣列中
如二維陣列a[2][3];
a[0]代表的是二維陣列第零行的首位址相當於&a[0][0];
a[1]代表的是二維陣列第一行的首位址相當於&a[1][0];
a[0]+1代表的是二維陣列第零行,第一列的位址相當於&a[0][1];
5.函式返回值為指標
當函式返回值的型別是指標時,要返回某個指標,不過要注意的是,不能在實現函式時返回在函式內部定義的區域性資料物件的位址,
這是因為所有的區域性資料物件在函式返回時就會消亡,其值不再有效。
2.1.1 偽**
定義乙個指標陣列months[13];
months[0]表示wrong input!,其餘的分別表示月份
if (n < 1或n>12)n = 0;end if;
return 英文月份;
2.1.2**截圖
2.1.3總結本題的知識點
這題是指標陣列的簡單運用,但一開始我的做法不是指標陣列,而是用二維陣列,但是後來發現二維陣列是在函式內部定義的,函式結束時,它的生存期只在函式內部,所以不能用二維陣列。
2.1.4pta提交列表及說明
1.部分正確:使用的是二維陣列,如上總結,本題不能使用二維陣列,要用指標陣列。
2.2.1 偽**
定義左右端點和中間點left,right,mid;
while(left<=right)
mid = (left + right) / 2;//二分
(*count)++;
if (中間值=key])return mid;end if
else if (中間值》key)right = mid - 1;end else if
else left = mid + 1;end else
}
2.2.2**截圖
2.2.3總結本題的知識點
形參*count
是乙個指標,函式中不能像之前那樣count++,而是要(*count)++
;
2.2.4pta提交列表及說明
答案錯誤:一開始寫的是*count++,沒有括號,後來發現及時改正。
2.3.1偽**
主串s:the c programming language
子串t:ram
char *search(char *s,char *t)
// 相同字元,則2指標同時移動
若子串在結束符,則返回子串在主串起始位址
若子串不在子串起始位址,則tptr=t,sptr 不動
sptr++ ;
}找不到,返回null
}
2.3.2**截圖
2.3.3總結本題的知識點
指標為null的狀態,返回字串所在位置:位址相減。字元相同,同時遍歷2個字串。
2.3.4pta提交列表及說明
1.**功能:在 haystack 字串中找出 needle 字串出現的第乙個位置,即實現strstr函式。通過兩個標記對字串進行遍歷,進行邊界處理之後,使用 k 進行角標標記,first 用於 撥正 i 迴圈的起點。
2.**優點:與pta上做的查詢子串不同,他進行了兩次標記進行遍歷,當needle是空字串時,要返回0。
C部落格作業05 指標
展示關於 指標題目集 分數截圖。每個知識點具體展開介紹。包括指標如何指向字串 字串相關函式及函式 原型的理解 字串相關函式用法 擴充套件課堂未介紹內容 具體格式是什麼,注意事項。為什麼要動態記憶體分配,堆區和棧區區別。動態記憶體分配相關函式及用法。舉例為多個字串做動態記憶體要如何分配。多個字串用二維...
C部落格作業05 指標
格式 datatype name value 定義格式 int p 定義,定義時必須帶 float p1 a char p2 c p1 b p2 d 賦值,在定義的同時賦值需要帶,單獨賦值時不能帶,因為p代表指標變數的值,即位址。p代表指標指標變數指向的變數的值。乙個函式在編譯時被分派乙個入口位址,...
C部落格作業05 指標
名說明a二維陣列名是乙個二級指標,即a 0 的位址 a 0 一級指標,即a 0 0 的位址 a i第i行的位址 a i 第i行首元素的位址,等價於a i a i 第i行首元素的值 指標這塊內容確實比較難理解,我pta上的大多數題目都是用陣列的操作思維完成的,現在通過部落格重新過了一遍書本的內容,發現...