C語言 指標 p++ / p-- - C語言零基礎入門教程
阿新 • • 發佈:2021-08-24
目錄
零基礎 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
請按任意鍵繼續. . .
*/
三.猜你喜歡
- 安裝 Visual Studio
- 安裝 Visual Studio 外掛 Visual Assist
- Visual Studio 2008 解除安裝
- Visual Studio 2003/2015 解除安裝
- C 語言格式控制符/佔位符
- C 語言邏輯運算子
- C 語言三目運算子
- C 語言逗號表示式
- C 語言 sizeof 和 strlen 函式區別
- C 語言 strcpy 和 strcpy_s 函式區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 陣列定義和使用
- C 語言 陣列遍歷
- C 語言 陣列排序 – 冒泡法排序
- C 語言 陣列排序 – 選擇法排序
- C 語言 陣列排序 – 插入法排序
- C 語言 陣列排序 – 快速法排序
- C 語言 陣列下標越界
- C 語言 陣列記憶體溢位
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 二維陣列定義和使用
- C 語言 二維陣列行數和列數計算
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
未經允許不得轉載:猿說程式設計 » C 語言 指標 p++ / p–
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!