C語言學習中整理的知識

2021-08-03 15:55:40 字數 938 閱讀 1488

一維陣列與指標之間的關係;

假如指標變數 px 指向陣列 x 的首元素,則;

x[i], * (px+i), * (x+i), px[i]具有完全相同的功能,即訪問陣列第 i+1 個元素。

首先, x[i] <==> * (x+i) 是無條件等價的,指標變數指向陣列 x 的首元素==> px = x;

那麼,px[i] == x[i] , * (px+i) = * (x+i).

所以以上4中方式的表達功能是一樣的。

指標變數 px 和陣列名 x (也叫陣列的指標)有著本質的區別。

指標變數是位址變數,而陣列的指標是位址常量,來看幾個例子;

x++;

px++;

x+1;

在以上3條語句中

x++; 是錯誤的,因為陣列的指標是位址常量不能做++運算;

px++; 是正確的,px為指標可以++,向位址大的方向移動,且自加一次移動的位址為所指向資料型別的位元組數。

eg:若指標為 int 型,px++,位址往大的方向移動 4 位;

x+1; 是正確的,因為 x+1; 執行之後並沒有改變 x 的值。

#include 

int main()

;int * p;

p = a;

a+1;

p++;

printf("%d\n",p[1];

return

0;}

個程式的結果是 3

首先指標 p 指向了陣列 a 的首元素,也就是1;

然後 a+1; 這句沒什麼意義,因為陣列名 a 是常量;

接著 p++;指標往後移了一次,指向了 a[1],此時 a[1] = p[0];

最後列印出 p[1],p[1]相當於 p[0+1],也就是 a[1+1] == a[2],所以結果是3.

「`

C語言學習筆記整理1

以列印hello world為例,介紹以下知識點 1 無論看什麼程式,首先要去找到main函式 main函式是程式執行的入口 2 include和 include stdio.h 的區別 include告訴編譯器到系統的目錄下面去查詢標頭檔案 include stdio.h 告訴編譯器先到當前目錄下...

C語言學習筆記整理3

1 記憶體分配 2 關鍵字 記憶體分配 儲存在四塊區域 棧 stack 堆 heap 資料區 data和.bas 常量區 唯讀 1 棧 區域性變數 函式的形參,自動變數 auto修飾 特點 1 棧空間是os 作業系統 自動分配和 程式設計師自己不用管 2 可以被反覆使用 3 棧空間是髒的。儲存上一次...

C語言學習日誌 初步知識

分類 關鍵字 預定義識別符號 使用者識別符號 命名規則 可以由字母 數字和下劃線組成,並且第乙個字元必須是字母或下劃線 位 記憶體中最小的單位,也稱二進位制數 位元組 8個二進位制位 若干位元組組成乙個字,用乙個字來存放一條機器指令或乙個資料 乙個字含多少位元組隨機器不同而不同 通常把乙個位元組中最...