tft每日頭條

 > 生活

 > c語言為什麼用指針

c語言為什麼用指針

生活 更新时间:2024-10-09 00:34:38

剛學習C語言的朋友,對指針“移動”可能不太理解。舉個例子,例如下述代碼:

int a = 1;

那麼大家都知道整型變量a 1肯定就是2了。如果是C語言的指針呢?例如:

int *p = 1;

指針p 1還是2嗎?

為了說明問題,請看以下C程序代碼:

#include "stdio.h" #include "stdlib.h" int main() { int index = 0; int number[3] = {1, 2, 3}; //定義一個整型數組 int *p = &number[0]; //指針p的初始值是數組第一個元素的地址 printf("p的值是 %x\n", p); //輸出p的值,也就是數組第一個元素的地址 printf("本機int類型占用 %d 個字節\n", sizeof(int)); //得知本機上int類型占用多少字節 for(index = 0; index < 3; index ) { printf("第 %d 個元素的地址是 %x\n", index 1, &number[index]); }//輸出數組中每一個元素的地址 for(index = 0; index < 3; index ) { printf("p加 %d 的值是 %x\n", index, p index); }//輸出指針p 1, p 2, p 3的值 return 0; }

C程序程序很簡單,目的就是為了說明C語言指針p自己加上1、2、3分别得到什麼值。運行結果如下:

c語言為什麼用指針(如何理解C語言的指針移動)1

指針p的初始值就是數組第一個元素的地址,為“12ff70”。那麼從指針p 1開始,并不是簡單的12ff70 1 = 12ff71,而是12ff70 4 = 12ff74。指針p 2也不是12ff70 2 = 12ff72,而是12ff70 4 4 =12ff78。所以C語言指針的增加運算與本文開頭的整型變量a的增加運算還不一樣,這也是許多C語言初學者經常會糊塗的一個地方。

指針p n其實計算的是p加上n*類型占用字節數。本文指針p是int類型,本機中,使用sizeof計算出的類型int占用的字節數是4。因此,指針p 1其實就是p 1 * 4個字節,指針p 2其實就是p 2 * 4個字節。關于每種類型在本機上占用的字節數網上有很多介紹,讀者可以自行搜索下。

可能也有的朋友說,這個我懂啊,p 1其實就是往前移動了4個字節啊!但是太自大也不好,太自大的結果就是你心裡知道p 1是跨越了4個字節的地址,但是手一抖,寫成了p 4,你說這是筆誤呢還是筆誤呢?

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved