关于字符串和整型指针输出问题!
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要求的参数就是一个值。
这是我在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要求的参数就是一个值。
相关文章推荐
- 关于结构体里面的字符串指针输出出现乱码的问题与结构体数组作为参数传值的问题
- 关于cout输出字符串指针
- 关于cout输出字符串指针
- SDUT OJ 2892 A (字典树问题-输出出现次数最多的字符串的出现次数,60ms卡时间,指针+最后运行完释放内存)
- 关于字符串指针初始化std::string的一个小问题
- Swift 关于字符串 Optional("123")输出的问题。
- 关于字符串指针不可修改的问题
- 关于TextOut输出的字符串透明的问题
- 关于字符串指针的一些问题及字符串的左旋转代码
- 关于字符串输出的问题
- 关于指针类型转化后在printf输出的问题
- 关于字符串指针不可修改的问题
- 关于数组与指针的输出问题
- 关于在asp.net后台输出提示字符串的时候显示的字符提示出错的问题
- 关于字符串的输入输出问题
- 关于字符串指针不可修改的问题
- 关于字符串的存储和输出问题
- 关于字符串指针不可修改的问题
- 问题:求两个字符串的最长公共子串。 要求:输入两个字符串,输出它们的最长公共子串,包括长度。 设计: 设计一个类 String,包括一个 len(字符串长度)和字符串指针 s。另有如下成员函数: ·
- 字符串输出的几种情况 关于内存问题