C語言第三次課

2021-07-11 19:11:23 字數 1948 閱讀 4611

#include

int main()

int*ptr;   // 宣告乙個int指標

int val =1;  // 宣告乙個int值

ptr =&val;  // 為指標分配乙個int值的引用

int deref =*ptr;  // 對指標進行取值,列印儲存在指標位址中的內容

printf("deref位址=%ld,值=%d\n",ptr, deref);

第2行,我們通過*操作符宣告了乙個int指標。接著我們宣告了乙個int變數並賦值為1。然後我們用int變數的位址初始化我們的int指標。接下來對int指標取值,用變數的記憶體位址初始化int指標。最終,我們列印輸出變數值,內容為1。

第6行的&val是乙個引用。在val變數宣告並初始化記憶體之後,通過在變數名之前使用位址操作符&我們可以直接引用變數的記憶體位址。

第8行,我們再一次使用*操作符來對該指標取值,可直接獲得指標指向的記憶體位址中的資料。由於指標宣告的型別是int,所以取到的值是指標指向的記憶體位址儲存的int值。

#include

struct person stud;

stud * creat(int n)/*建立單鏈表的函式,形參n為人數*/

stud *p,*h,*s; /* *h儲存表頭結點的指標,*p指向當前結點的前乙個結點,*s指向當前結點*/

int i; /*計數器*/

if((h=(stud *)malloc(sizeof(stud)))==null)/*分配空間並檢測*/

printf("不能分配記憶體空間!");

exit(0);

h->name[0]='\0'; /*把表頭結點的資料域置空*/

h->link=null; /*把表頭結點的鏈域置空*/

p=h; /*p指向表頭結點*/

for(i=0;iif((s= (stud *) malloc(sizeof(stud)))==null)/*分配新儲存空間並檢測*/

printf("不能分配記憶體空間!");

exit(0);

p->link=s; /*把s的位址賦給p所指向的結點的鏈域,這樣就把p和s所指向的結點連線起來了*/

printf("請輸入第%d個人的姓名",i+1);

scanf("%s",s->name); /*在當前結點s的資料域中儲存姓名*/

s->link=null;

p=s; //要把s的資料儲存到p中,要不下次迴圈s就又指向乙個空的新位址了。

return(h);

int main()

int number; /*儲存人數的變數*/

stud *head; /*head是儲存單鏈表的表頭結點位址的指標*/

number=n;

head=creat(number); /*把所新建的單鏈表表頭位址賦給head*/

體會:

你要去某個人的家裡,比如張三。你需要知道他家的位址,門牌號。

變數,就相當於張三

指標,就相當於位址,門牌號

比如int a=3,

記憶體中分配一塊空間來儲存3,

3是資料,定義指標*p=&a,

記憶體也分配一塊空間,

並且把3所在空間的位址賦給p,

這樣p中就指向3所在空間,*p的值就是3。

a和p是分配空間的名字。

這樣有個標籤就更加方便明確、同時這也是非常重要的。

比如如果你想通過函式改變乙個變數的值,就得用指標而不能用值傳遞。
還有在很多時候變數,特別是物件的資料量實在太大,程式設計師就會用指標來做形參,只需要傳遞乙個位址就行,這樣大大提高了效率。

C語言基礎課第三次作業

1.實驗 7 1 找出最小值 20 分 includeint main void printf min d m return0 2 設計思路 1 第一步 輸入a代表輸入數的個數 第二步 把接下來輸入的數存於b 第三步 讓for語句迴圈a 1次 第四步 每次輸入的數與b比較,比b小則把數賦值給b 2 ...

C語言第三次作業

1.實驗 1 找出最小值 includeint main printf min d min return0 設計思路 第一步定義變數n,j,i,min 第二步輸入n,j 第三部賦值min j,第四部,迴圈語句比大小 第五步輸出最小值 流程圖 3.遇到的問題以及解決辦法 錯誤原因為在比較大小的迴圈中沒...

第三次C語言作業

一.實驗目標 掌握c語言檔案操作的基本方法 1.根據需求,選擇不同的方式來開啟檔案 2.讀取檔案中的資料 3.向檔案中寫入資料 4.了解緩衝區以及eof概念 5.了解一些基本的system語句 清屏,暫停等 三.執行介面 四.實驗結果 1.建立資料夾 2.資料輸入 實驗四 查詢system類函式 s...