当前位置:   article > 正文

C语言 使用指针的2个小例子

C语言 使用指针的2个小例子

指针这部分,还是要多写多看,反复翻看笔记。

1.  *,一个星号,有2个作用(2种情况,2种含义)很容易混淆,而且都是用星号(*)。

  • int* p =  &something,  此时的 *, 是定义一个指针,指向某个变量的地址。

  • *p = *p + 1,  这里的 *, 指的是 取值符(对应取址符, &。 这里多写一句,这里的 *, 专业一点,叫做"解引用运算符". 但是我还是觉得 “取值”比较简单 + 好记。

2. 下面的例子,把指针作为函数的参数,可以直接修改一些外部的变量值。见注释.

  1. #include<stdio.h>
  2. #include<string.h>
  3. void add(int* p) {
  4. // 1.传入的 *p, 表示 指针 p, 即 p 是一个指针。
  5. // 2. 下面这个 *p, 指的是 取值, 即具体的值。
  6. // 由于直接在内存地址上操作了,所以返回类型是 void,
  7. // 但是实际上,p 的值已经被修改了。
  8. *p = *p + 1;
  9. }
  10. int main() {
  11. int a = 1;
  12. printf("a is %d\n", a); // 输出 a is 1
  13. int *pa = &a;
  14. add(pa);
  15. printf("a is %d\n", a); // 输出 a is 2
  16. return 0;
  17. }

3. 使用指针来遍历数组, 记住一句话:
在C语言中,数组名data, 可以被视为指向数组第一个元素的指针。

示例代码:

  1. #include <stdio.h>
  2. #include <string.h>
  3. // 使用指针来遍历数组
  4. int main(void) {
  5. // 在C语言中,数组名data可以被视为指向数组第一个元素的指针。
  6. int data[5] = {1, 2, 3};
  7. for (int i=0; i< 5; ++i){
  8. // (data + i), 即为数组元素的地址, 可以当做是一个指针!
  9. printf("data[i] address is: %p\n", (data + i));
  10. // *(data + i), 即为数组元素的值. 就是 取值符
  11. printf("data[i] is: %d\n", *(data + i));
  12. }
  13. return 0;
  14. }
  15. // 输出:
  16. // data[i] address is: 00000032a09ffa90
  17. // data[i] is: 1
  18. // data[i] address is: 00000032a09ffa94
  19. // data[i] is: 2
  20. // data[i] address is: 00000032a09ffa98
  21. // data[i] is: 3
  22. // data[i] address is: 00000032a09ffa9c
  23. // data[i] is: 0
  24. // data[i] address is: 00000032a09ffaa0
  25. // data[i] is: 0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/853818
推荐阅读
相关标签
  

闽ICP备14008679号