程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 三、指針,指針

三、指針,指針

編輯:關於C語言

三、指針,指針


1.內存地址就是一個編號,這些編號都是連續的,稱作地址。編號對應的內存以字節為單位劃分。 2.內存地址的大小與數據總線的位數有關 3.內存訪問分為:直接訪問和間接訪問 ①直接訪問:直接訪問內存單元中的內容 示例: int a = 20 ; 對於直接訪問,a代表存放數據的內存單元,通過對a賦值或者取值,實現對內存的訪問 ②間接訪問:通過內存單元編號(地址)以及數據所占字節數訪問內存中的數據 間接訪問在程序中隨處可見,通過指針實現內存的間接訪問 4.指針:就是地址。內存地址,我們習慣上把內存地址叫做指針。 5.地址:內存編號。內存地址可以簡稱為地址。“&”查看一個變量的內存地址。“%p”打印地址 6.關鍵符號:“&”取地址符  7.指針變量:存儲內存地址的變量 8.定義指針變量:需要在前面加* 此時 * 僅僅起到表示作用,告訴編譯器 p 一個存放 地址 的變量,p是一個指針變量 示例: int a = 20; int *p = &a;//(int *)p = &a; 9.取值符號 * 使用 * 號訪問內存編號裡面對應的內容 示例: int a = 5;//定義一個整型 int *p = NULL;//定義一個指針變量,地址為空 p = &a;//獲取a的地址 printf(“%d”,*p);//*p獲取a中的內容 10.給指針變量賦值,意味著指針的重指向 11.指針的類型: ①因為內存地址只跟操作系統有關,所以指針變量所占的內存大小取決於操作位數(32位系統指針占4個字節,64位系統指針占8個字節) 示例: int *p = NULL; double *p1 = NULL; float *p2 = NULL; long *p3 = NULL; char *p4 = NULL; printf(“%lu\n”,sizeof(p));//8個字節 printf(“%lu\n”,sizeof(p1));//8個字節 printf(“%lu\n”,sizeof(p2));//8個字節 printf(“%lu\n”,sizeof(p3));//8個字節 printf(“%lu\n”,sizeof(p4));//8個字節 因為只要是地址,都是8個字節。地址字節數與數據類型無關,數據類型管控從哪開始取,取多少字節。 ②int *p 整型指針 double *p 雙精度指針 char *p 字符指針 ③不同類型的指針,訪問的內存大小不一樣 12.內存怎麼來的 ①手動申請(malloc函數) ②系統分配(定義變量的內存空間都是系統分配的) 13.指針變量加減一個常數,指針本身不移動 14.指針變量自增自減,指針移動,地址發生變化。 15.指針類型一定要和指向內存中的數據類型一致。 16.補碼:①符號位不變②其他位取反③最後一位加1 17.數組名是一個符號地址常量,不是變量,所以不能自增、自減

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved