cpp指针的运算

09 指针的运算

指针是一个存储内存空间地址的一个数据。我们可以创建一个指针然后打印一下:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

int a;
int* p = &a;
cout << (int)p << endl;
-1581319276

在这里,我们可以很明显看出这个p的指针是一个int类型的。int类型占用 4 个字节的大小。

  1. 指针的加法:

    我们接着上面的例子,修改一下代码:

    int a;
    int* p = &a;
    cout << (int)p << endl;
    p++;
    cout << (int)p << endl;
    p = p + 1;
    cout << (int)p << endl;
    -321913948
    -321913944
    -321913940

    发现三次输出p所记录的内存空间,都是相差 4 个字节,这是因为int类型占用 4 个字节的空间。让指针+x(这里x表示的是一个数字)或者是++,就表示让这个指针前进x个或者1个数据类型所占用的空间大小。

  2. 指针的减法:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

    int a;
    int* p = &a;
    int* p2 = p;
    p2--;
    cout << (p - p2) << endl;
    1

    这里的(p - p2),是两个指针相减。指针的减法,得出的结果是相差的数据类型的个数。

    可能不是很好理解,那么我们试一下这样:

    如下的命令中,创建了一个int类型的数组,数组里面有 5 个元素。之后我们让指针p指向数组首元素,指针p2指向数组的最后一个元素(最后一个元素的下标是4哦)(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

    int arr[5];
    int* p = &arr[0];
    int* p2 = &arr[4];
    cout << p2 - p << endl;
    4

    这是因为,arr[4]arr[0]之间相差4个元素。指针的减法表示的是两个内存空间之中相差了几个元素。

文章「cpp指针的运算」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/757」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇