您的位置:首页 > 其它

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

2015-03-20 09:45 821 查看
自从学习了网易云课堂翁凯老师的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要求的参数就是一个值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: