C编程中的一个小问题
大家首先请看源码:#include<stdio.h>
voidmain()
{
int i;
int a;
int *p;
printf("Please input the number of array A:\n");
for ( i=0; i<10; i++)
{
printf("a[%d]= ",i);
a=getchar ();
}
for (p=a ;p<(a+10); p++)
{
printf("a[%d]=\n",*p);
}
}
结果,首先提示输入a,输入'0'之后回车,结果显示"a=a= “,以下的全是如此,各位大神帮忙看看,问题到底出在哪里? #include<stdio.h>
int main()
{
int i;
int a;
int *p;
printf("Please input the number of array A:\n");
for ( i=0; i<10; i++)
{
printf("a[%d]= ",i);
scanf("%d",&a) ;
//假设这样输入1回车2回车....
//a=getchar (); 第一次取到的是数字1的ASCII码49,
//第二次取到的是回车的ASCII码10,所以你的显示不让你输入a
//取数字还是用格式化SCANF取%d吧,不然取到的也不是你想要的
}
for (p=a,i=0 ;p<(a+10); p++,i++)
{
printf("a[%d]=%d\n",i,*p) ;
//printf("a[%d]=\n",*p); 打印语句有点问题
}
return 0 ;
} 小白求解
int *p; 是什么意思啊?
mse9591 发表于 2015-7-8 08:25
小白求解
int *p; 是什么意思啊?
定义一个指向整数型的指针 牡丹花下死做鬼 发表于 2015-7-8 08:35
定义一个指向整数型的指针
哦谢谢了
怪不得看不懂
指针我还没看到呢…… 感谢Itt1986,指出了问题所在。但是为什么呢?我是说为什么键盘输入“1”却得到了ASICC码?还有,这个小程序我用scanf()也曾经试过,结果依然如故。另外请不吝赐教,打印函数有什么问题?输出的结果确实不对。谢了! andywang1161 发表于 2015-7-8 17:09
感谢Itt1986,指出了问题所在。但是为什么呢?我是说为什么键盘输入“1”却得到了ASICC码?还有,这个小程 ...
我帮你改好了(看我改完的代码,错误的地方我注释掉了你编译下看看),用scanf的你看下运行是正确的,你说为什么输入1得到的是ASCII码啊,getchar ()这个函数是获取一个字符的,你定义的是一个整型的数组,你把一个字符存放到整型数组中会自动强制转换,就存入的是字符的ASCII码值了(字符用于赋值啊参加运算啊都是用的ASCII码啊,不然你想两个字符相加减怎么算,哪个字符大哪个小怎么说),从字符到整型转换是不丢失的,你也可以把字符看成无符号整型.
页:
[1]