C語言 指針 p++ / p-- - C語言零基礎入門教程


目錄

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.變量 i++/i–

在前面的文章 自加自減運算符(++ i /i ++) 中介紹了關於變量自增和自減的運算,舉個例子:

int x = 10;
x++;  //等價 x = x + 1 = 11
++x;  //等價 x = x + 1 = 12
--x;  //等價 x = x - 1 = 11
x--;  //等價 x = x - 1 = 10

++/后++的區別:

--/后--的區別:

二.指針 p++/p–

指針 指針相當於一個變量,它存放的是變量在內存中的地址,是十六進制類型,它可以指向任意類型的數據。

數組:**數組在內存中是連續存放的,開辟一塊連續的內存空間**。數組是根據數組的下標進行訪問的,多維數組在內存中是按照一維數組存儲的,只是在邏輯上是多維的。

1.通過下標訪問數組元素

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 指針 p++ / p–
//@Time:2021/06/16 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include<stdlib.h>
#include<stdio.h>
void main()
{
    int arr[5] = { 10,20,30,40,50 };
    int len = sizeof(arr) / sizeof(arr[0]); //獲取數組長度
    for (int i = 0;i<len;i++)
    {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    system("pause");
}
/*
輸出:
arr[0] = 10
arr[1] = 20
arr[2] = 30
arr[3] = 40
arr[4] = 50
請按任意鍵繼續. . .
*/

2.通過指針偏移訪問數組元素

指針作為一個變量,肯定有自己的地址,占位符使用 %p 或者 %x ;

int *p = 10;
printf(" p : %p",p);// 輸出地址:004FF798

指針作為一個變量,肯定有自己的值,占位符使用 %d ,取指針的值需要在指針變量前面加上 * ,否則是取指針的地址,例如:

int *p = 10;
printf(" p : %d",*p);// 輸出值: 10
printf(" p : %p",p); // 輸出地址:004FF798

數組在內存中是連續存放的,所以可以通過指針偏移來訪問數組,例如:

int arr[5] = { 10,20,30,40,50 };
int *p = arr; //等價 *p = arr[0];
int value1 = *p++; // int value1 = arr[1];
int value2 = *p++; // int value2 = arr[2];
int value3 = *p++; // int value3 = arr[3];
int value4 = *p++; // int value4 = arr[4];

在上面的例子中,通過指針 p 指向數組 arr ,默認指針 p 指向數組的第一個元素 arr[0],通過 *p++ 偏移來獲取數組每一個元素對應的值,通過指針偏移來變量數組,舉個例子:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 指針 p++ / p–
//@Time:2021/06/16 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include<stdlib.h>
#include<stdio.h>

void main()
{
    int arr[5] = { 10,20,30,40,50 };
    int* p = arr;  //定義一個空指針
    int len = sizeof(arr) / sizeof(arr[0]);//計算數組長度
    for (int i = 0; i < len; i++)
    {
        //&arr[0]:表示取arr[0]元素的地址
        printf("根據下標索引值循環:數組下標:%d 對應的元素地址是: %d 對應的元素的值是: %d\n", i,&arr[i],arr[i]);
    }
    printf("\n");
    for (int i = 0;i<len;i++)
    {
        // p:是一個地址
        //*p:取p對應地址的值
        printf("根據指針偏移循環:數組下標:%d 對應的元素地址是: %d 對應的元素的值是: %d\n", i, p, *p);
        p++; //地址偏移+1,等價偏移到下一個元素地址
    }
    system("pause");
}
/*
輸出:
根據下標索引值循環:數組下標:0 對應的元素地址是: 561904944 對應的元素的值是: 10
根據下標索引值循環:數組下標:1 對應的元素地址是: 561904948 對應的元素的值是: 20
根據下標索引值循環:數組下標:2 對應的元素地址是: 561904952 對應的元素的值是: 30
根據下標索引值循環:數組下標:3 對應的元素地址是: 561904956 對應的元素的值是: 40
根據下標索引值循環:數組下標:4 對應的元素地址是: 561904960 對應的元素的值是: 50
根據指針偏移循環:數組下標:0 對應的元素地址是: 561904944 對應的元素的值是: 10
根據指針偏移循環:數組下標:1 對應的元素地址是: 561904948 對應的元素的值是: 20
根據指針偏移循環:數組下標:2 對應的元素地址是: 561904952 對應的元素的值是: 30
根據指針偏移循環:數組下標:3 對應的元素地址是: 561904956 對應的元素的值是: 40
根據指針偏移循環:數組下標:4 對應的元素地址是: 561904960 對應的元素的值是: 50
請按任意鍵繼續. . .
*/

三.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. C 語言格式控制符/占位符
  6. C 語言邏輯運算符
  7. C 語言三目運算符
  8. C 語言逗號表達式
  9. C 語言 sizeof 和 strlen 函數區別
  10. C 語言 strcpy 和 strcpy_s 函數區別
  11. C 語言 memcpy 和 memcpy_s 區別
  12. C 語言 數組定義和使用
  13. C 語言 數組遍歷
  14. C 語言 數組排序 – 冒泡法排序
  15. C 語言 數組排序 – 選擇法排序
  16. C 語言 數組排序 – 插入法排序
  17. C 語言 數組排序 – 快速法排序
  18. C 語言 數組下標越界
  19. C 語言 數組內存溢出
  20. C 語言 數組下標越界和內存溢出區別
  21. C 語言 二維數組定義和使用
  22. C 語言 二維數組行數和列數計算
  23. C 語言 指針聲明和定義
  24. C 語言 指針 p++ / p–

未經允許不得轉載:猿說編程 » C 語言 指針 p++ / p–

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM