逍遙自在學(xué)C語(yǔ)言 | 指針的基礎(chǔ)用法
前言
在C語(yǔ)言中,指針是一項(xiàng)重要的概念,它允許我們直接訪問(wèn)和操作內(nèi)存地址。
可以說(shuō),指針是C語(yǔ)言一大優(yōu)勢(shì)。用得好,你寫(xiě)程序如同趙子龍百萬(wàn)軍中取上將首級(jí);用得不好,則各種問(wèn)題層出不窮,有種雙拳難敵四手的感覺(jué)。
本文將介紹指針的基礎(chǔ)知識(shí),包括指針的定義、初始化、訪問(wèn)和運(yùn)算。
一、人物簡(jiǎn)介
- 第一位閃亮登場(chǎng),有請(qǐng)今后會(huì)一直教我們C語(yǔ)言的老師 —— 自在。

- 第二位上場(chǎng)的是和我們一起學(xué)習(xí)的小白程序猿 —— 逍遙。

二、指針的基本概念
指針是一種變量,它存儲(chǔ)的是內(nèi)存地址而不是實(shí)際的值。
通過(guò)指針,我們可以直接訪問(wèn)和操作內(nèi)存中存儲(chǔ)的數(shù)據(jù)。下面是指針的基本概念:
int* ptr; // 聲明一個(gè)指向整數(shù)的指針
在上面的示例中,我們聲明了一個(gè)名為ptr的指針變量,它可以指向整數(shù)類(lèi)型的數(shù)據(jù)。
指針變量的類(lèi)型必須與其指向的數(shù)據(jù)類(lèi)型相匹配。
三、聲明和初始化指針
要聲明指針變量,我們需要使用*符號(hào)來(lái)指示該變量是一個(gè)指針。下面是指針的聲明和初始化示例:
int* ptr; // 聲明一個(gè)指向整數(shù)的指針
int num = 10; // 聲明一個(gè)整數(shù)變量
ptr = # // 將指針指向num變量的地址
在上面的示例中,我們聲明了一個(gè)指向整數(shù)的指針ptr,然后將其初始化為變量num的地址,使用&運(yùn)算符可以獲取變量的地址。
四、訪問(wèn)指針和間接引用
通過(guò)指針,我們可以訪問(wèn)和修改其指向的變量。使用指針訪問(wèn)變量的值稱(chēng)為間接引用或解引用操作。
下面是訪問(wèn)指針和解引用的示例:
int* ptr;
int num = 10;
ptr = #
printf("變量num的值:%d\n", *ptr); // 輸出:變量num的值:10
*ptr = 20; // 修改變量num的值
printf("變量num的新值:%d\n", num); // 輸出:變量num的新值:20
在上面的示例中,我們使用*ptr來(lái)訪問(wèn)指針?biāo)赶虻淖兞?code>num的值,并可以對(duì)其進(jìn)行修改。
五、指針的運(yùn)算
指針支持一些特定的運(yùn)算,使得我們能夠在內(nèi)存中進(jìn)行定位和遍歷。
以下是指針的常見(jiàn)運(yùn)算:
- 指針的自增和自減運(yùn)算:使用自增和自減運(yùn)算符可以將指針移動(dòng)到下一個(gè)或上一個(gè)內(nèi)存位置。
int* ptr;
int nums[] = {1, 2, 3, 4, 5};
ptr = nums; // 指針指向數(shù)組的第一個(gè)元素
printf("第一個(gè)元素的值:%d\n", *ptr); // 輸出:第一個(gè)元素的值:1
ptr++; // 指針自增,移動(dòng)到下一個(gè)元素
printf("第二個(gè)元素的值:%d\n", *ptr); // 輸出:第二個(gè)元素的值:2
- 指針之間的相減運(yùn)算:可以對(duì)兩個(gè)指針進(jìn)行相減運(yùn)算,得到它們之間的距離(以元素個(gè)數(shù)為單位)。
int* ptr1;
int* ptr2;
int nums[] = {1, 2, 3, 4, 5};
ptr1 = nums; // 指針1指向數(shù)組的第一個(gè)元素
ptr2 = &nums[3]; // 指針2指向數(shù)組的第四個(gè)元素
int distance = ptr2 - ptr1;
printf("兩個(gè)指針之間的距離:%d\n", distance); // 輸出:兩個(gè)指針之間的距離:3
通過(guò)以上示例,我們可以看到指針的自增、自減和相減運(yùn)算的應(yīng)用,它們?cè)诒闅v數(shù)組和計(jì)算距離等場(chǎng)景中非常有用。
六、示例代碼
下面是完整的示例代碼,用于加深對(duì)指針的理解,鞏固前面所學(xué)的知識(shí):
#include <stdio.h>
int main() {
int num = 10;
int* ptr = #
printf("變量num的值:%d\n", *ptr);
*ptr = 20;
printf("變量num的新值:%d\n", num);
int nums[] = {1, 2, 3, 4, 5};
int* p = nums;
printf("第一個(gè)元素的值:%d\n", *p);
p++;
printf("第二個(gè)元素的值:%d\n", *p);
int* p1 = nums;
int* p2 = &nums[3];
int dist = p2 - p1;
printf("兩個(gè)指針之間的距離:%d\n", dist);
return 0;
}
小結(jié)
通過(guò)這篇文章,我們學(xué)會(huì)了
1、指針的基本概念
2、指針的基本用法
??歡迎各位 ??點(diǎn)贊 ?收藏 ??評(píng)論,如有錯(cuò)誤請(qǐng)留言指正,非常感謝!

浙公網(wǎng)安備 33010602011771號(hào)