为啥会无法输出字符串啊郁闷了。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥会无法输出字符串啊郁闷了。。。相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
void main()

char *p[3],a[4]="abc",b[4]="def";
p[0]=a;

printf("%s",*p[0]);

你定义的p是个char型的指针数组,表示有3个指针。但指向的都是char ,这里要注意,不是指向字符串。
p[0]=a ,a是数组a的首地址,所以,p[0]指向a的第一个元素。这里要记得,他是char型的,不是字符串。
[]符号优先于*号,所以*p[0]是一个char 型的.
而你的printf用了%s, 正常程序运行时会报非法访问地址的.打印就打不出来了。
你可以这样子试试 printf("%s",p[0]); 可能就可以打印出来abc了
参考技术A *p[3] 指针就不用定义长度了
赋值的时候 指针指向的是数组的首地址 p=a;
如果是要显示字符的话应该是用%c , *(p+i) 这种形式才对
不是中括号
参考技术B #include<stdio.h>
#include<string.h>
void main()

char *p[3]; //指针数组,p是指针的指针
char a[4]="abc",b[4]="def"; //定义字符数组,存放字符串
p[0]=a; //a是字符串指针

printf("%s",p[0]); //去掉*p[0]前面的星号,p是指针数组,每个成员都是指针
参考技术C p[0]本身已经是a的首地址了,不用再取*了,取*反而变成"abc"中的字符 'a'了 参考技术D printf("%s",*p[0]); 改成 printf("%s", p[0]);

java中"(double)(Math.round(x3 * 10000))/10000"为啥这个东西会输出小数啊?

\"(double)(Math.round(x3 * 10000))/10000\"为什么这个东西会输出小数啊?不是Math.round返回的是long类型的吗?即使long类型的变量被强制转换成了double类型,那还应该是长整型啊。

double是双精度类型在你/10000之前已经被强转 再后面的操作只要不再转换它将一只是double 也就是双精度的带小数点的结果 参考技术A 你产生一个随机数把它放大10000倍 然后又缩小10000倍 参考技术B 你都说了转换了,怎么还是long类型呢....

以上是关于为啥会无法输出字符串啊郁闷了。。。的主要内容,如果未能解决你的问题,请参考以下文章

问一下啊,以下程序出现了啥问题,为啥当输入字符串中有空格时,输出结果就有问题?

c++里边string类用数组的形式输入为啥无法用cout输出?

网站做压力测试,为啥div里的字母和特殊字符不自动换行?中文文字可以!郁闷...

java阅读程序。判断整数m,n的最后值的数值与含义? 我算是算了,可不知道为啥,就是编译错误。郁闷的头

为啥c++中无法用cout输出字符串

我这是新建的jsp文件,可是为啥会提示错误啊!