首页 >后端开发 >C++ >C/C 中的 `ptr`、`ptr` 和 `*ptr` 有什么区别?

C/C 中的 `ptr`、`ptr` 和 `*ptr` 有什么区别?

Linda Hamilton
Linda Hamilton原创
2024-12-20 07:20:09250浏览

What's the Difference Between `ptr  `, `  ptr`, and `  *ptr` in C/C  ?

指针表达式:ptr、 ptr 和 *ptr

理解这三个指针表达式可能会令人畏惧。本详细指南将分解每个表达式的操作,并提供其在代码中实际应用的示例。

*ptr

此表达式取消引用指针,然后递增指针的值地址.

示例:

char *p = "Hello";
while (*p++) {
    printf("%c", *p);
}

此代码打印“ello”而不是“Hello”,因为访问字符后指针会递增,跳过 'H' 字符。

* ptr

这个表达式增加指针的地址,然后取消引用指针

示例:

char *p = "Hello";
printf("%c", *++p);

此代码打印“e”作为后面的字符初始指针值(指向“H”)在递增以指向之前被访问'e'.

*ptr

此表达式 取消引用指针,然后递增地址 处的值。

示例:

char q[] = "Hello";
char *p = q;
printf("%c", ++*p);

此代码打印“I”作为值地址直接递增为“I”。

(*ptr)

此表达式略有不同,在递增值之前强制取消引用

示例:

char q[] = "Hello";
char *p = q;
printf("%c", (*p)++);

此代码打印“H”,然后使下一个增量目标为“I”。

结论

这些指针表达式提供了指针操作的灵活性。然而,了解它们的复杂性至关重要,包括优先顺序、价值评估和副作用。通过详细了解这些操作,您可以在代码中有效地利用它们并避免潜在的陷阱。

以上是C/C 中的 `ptr`、`ptr` 和 `*ptr` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn