C指针

*与const

void func1(int* const p)
{
    *p = 0;
    // p++; //const修饰的是指针本身,不能修改指针的地址
}

void func2(const int* p)
{
    //*p = 0; //const修饰的是指针所指向的数据,不能修改数据
    p++;
}

void func3(const int* const p)
{
    //指针本身和数据都被const修饰,都不能修改
    //*p = 0;
    // p++;
}

void func4(int* p)
{
    //都可以修改
    *p = 0;
    p++;
}

*与++

*p++

int main(void)
{
    int a[10] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
    int* p = a;

    printf("Before: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("p points to address: %p\n", (void*)p);

    int b = *p++;//等价于 int b = *(p++); 先取p指向的值赋给b,然后p自增,指向下一个元素
    printf("After: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("b=%d\n", b);
    printf("p points to address: %p\n", (void*)p);

    return 0;
}

运行结果

++*p

int main(void)
{
    int a[10] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
    int* p = a;

    printf("Before: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("p points to address: %p\n", (void*)p);

    int b = ++*p;//等价于 int b = ++(*p); 先取p指向的值进行自增,然后将自增后的值赋给b
    printf("After: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("b=%d\n", b);
    printf("p points to address: %p\n", (void*)p);
}

运行结果

*++p

int main(void)
{
    int a[10] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
    int* p = a;

    printf("Before: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("p points to address: %p\n", (void*)p);

    int b = *++p;//等价于 int b = *(++p); 先让p自增,指向下一个元素,然后取该元素的值赋给b
    printf("After: a[0]=%d, a[1]=%d\n", a[0], a[1]);
    printf("b=%d\n", b);
    printf("p points to address: %p\n", (void*)p);
}

运行结果

*与.

int main(void)
{
    struct Point p1 = {0, 0};
    struct Point* p2 = &p1;

    // *p2.x = 30; // 错误用法, .运算符优先级高于*
    (*p2).x = 10; // 正确用法
    p2->y = 20; // 正确用法
    printf("p1.x=%d, p1.y=%d\n", p1.x, p1.y);

    return 0;
}

运行结果

暂无评论

发送评论 编辑评论


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