关于字符串和整型指针输出问题!

自从学习了网易云课堂翁凯老师的C语言课程之后,我觉得自己对编程有了更深层次的理解,无论是在编程的思路上还是思考问题解决问题的方式上。我觉得学计算机最重要的不是掌握了多少知识,每一个技术大牛肯定是有宽广的知识面以及扎实的技术功底的,但是他们的优势是不断的学习和积累,不停地找到新的学习方法,掌握解决问题的能力,日积月累之后渐渐地进化成一个完全体。

这是我在MOOC网课学习C时不解的一个问题,虽然问题很小,但是也有热心的大神替我解答了。

#include<stdio.h>

#include<string.h>

int main(void){

char *s="hello";

char *p = strchr(s,'l');

printf("%s\n",p);   ------------------1


int a[] ={0,1,2,3,4};

int *b =a;

printf("%d\n",*b);  ------------------2

return 0;

}

代码如上,*p指向字符串,*b指向整型,为什么1处*p输出加了*以后输出报错,2处*b不加*以后输出的是a的地址,整型和字符串指针输出结果为什么有这样的区别呢?

所以其实是因为%d和%s传的参数的区别,

printf("%s\n",p);   ------------------1

printf %s  他要求的参数是一个指针 而你*p 传了值 他就把值当作了指针 使用了一个无效的指针 当然出错了 


printf("%d\n",*b);  ------------------2

b即是a[]的指针 也是a[]中第一个值的指针

原来是因为%s  他要求的参数是一个指针,这样就解释的通了,而%d要求的参数就是一个值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值