HackerRank - C语言5 - 指针题 Pointers in C(代码参考)

这个是指针很好的科普文 指针。分为五种维度。
简单理解,每个变量不仅有表面上的值12345678等等,背后也是有内存地址的。
定义指针变量,其实就是让指针变量 和 其他某变量 做 “捆绑” 然后实现一些方便功能。。
如下

int a;
int *pa = &a;

这样 指针变量本身有值pa,叫“己值”。
也有自己的内存地址&pa。叫“己址”。
指针变量的值pa,就是捆绑的那个变量a的地址。叫“他址”。
*pa也就是捆绑的那个变量a的值,叫“他值“。
int *pa 的int 是他值的类型,也就是捆绑的那个变量a的类型,也就是int a 的int,整数,叫“他型”。

先看题目的一部分

#include <stdio.h>

void update(int *a,int *b) {
    // Complete this function    
}

int main() {
    int a, b;
    int *pa = &a, *pb = &b;   
    
    scanf("%d %d", &a, &b);
    update(pa, pb);
    printf("%d\n%d", a, b);

    return 0;
}

给了后面的,要你补上前面的“指针”内容。

看看后面的
先是,定义了两个整数型变量ab
再声明了两个整数型指针变量pa和pb,分别和a、b变量的内存地址做了“捆绑”。

scanf读取你输入的ab值,传到变量ab

被题目要求的update“指针”这个函数进行处理pa、pb指针变量。
被函数处理完,按题目要求是实现相加功能和相减的绝对值功能。最后打印出来。

现在我们补上前面的。
题干所先写好的update里的int 星号a 这个a和b和题目后面的变量ab无关,可以换个其他的c和d,以免具有迷惑性。不换也可以。它是声明两个指针变量,用来传pa.pb。 update(pa,pb)papb俩,传进去函数后。
1 int x,y; 定义两个整数型变量。题目要求是a’,无所谓了,随便定义。
2 x = *a + *b; 星号a就是*pa,pa的“他值”也就是变量a的值,+上 ,pb的“他值“也就是b的值,最后赋给x
3 y = *a - *b; 同上,变成减法。
4 *a = x; 将x值赋给pa的“他值”,也就是最终的变量a打印的值。
5 *b =abs(y); 将y值赋给pb的“他值”,也就是最终变量b打印的值,abs是绝对值处理。

最终代码

#include <stdio.h>
#include <stdlib.h>
void update(int *a,int *b) {
    // Complete this function  
      int x,y;
    x = *a + *b;
    y = *a - *b;
    *a = x;
    *b =abs(y); 
}

int main() {
    int a, b;
    int *pa = &a, *pb = &b;
    
    scanf("%d %d", &a, &b);
    update(pa, pb);
    printf("%d\n%d", a, b);

    return 0;
}

指针是挺绕的,我也是初学。或许我也有讲错的地方。请斧正。继续加油学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值