#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...