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

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

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

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

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

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

#include<stdio.h>
#include<string.h>

void add(int* p) {
    // 1.传入的 *p, 表示 指针 p,  即 p 是一个指针。
    
    // 2. 下面这个 *p, 指的是 取值, 即具体的值。
    // 由于直接在内存地址上操作了,所以返回类型是 void, 
    // 但是实际上,p 的值已经被修改了。
    *p = *p + 1;
}


int main() {

    int a = 1;
    printf("a is %d\n", a);  // 输出 a is 1
    
    int *pa = &a;
    add(pa);
    printf("a is %d\n", a);  // 输出 a is 2

    return 0;
}

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

示例代码:

#include <stdio.h>
#include <string.h>


//  使用指针来遍历数组
int main(void) {
    
    // 在C语言中,数组名data可以被视为指向数组第一个元素的指针。
    int data[5] = {1, 2, 3};
  
    for (int i=0; i< 5; ++i){
        
        // (data + i), 即为数组元素的地址, 可以当做是一个指针!
        printf("data[i] address is: %p\n", (data + i));

        // *(data + i), 即为数组元素的值. 就是 取值符
        printf("data[i] is: %d\n", *(data + i));
        
    }
     
    return 0;
}

// 输出:

// data[i] address is: 00000032a09ffa90
// data[i] is: 1
// data[i] address is: 00000032a09ffa94
// data[i] is: 2
// data[i] address is: 00000032a09ffa98
// data[i] is: 3
// data[i] address is: 00000032a09ffa9c
// data[i] is: 0
// data[i] address is: 00000032a09ffaa0
// data[i] is: 0

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值