首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组、指针有关问题解答

2012-02-04 
数组、指针问题解答以下程序:#includestdio.hvoidmain(){char*s1printf( sizeof(s1)%d ,sizeof(s1))

数组、指针问题解答
以下程序:
#include   <stdio.h>
void   main()
{
char   *s1;
printf( "sizeof(s1)=%d ",sizeof(s1));
scanf( "%s%s ",s1);
printf( "s1=%s ",s1);
printf( "sizeof(s1)=%d ",sizeof(s1));
getch();
}
运行情况:
输入:string1
输出:2   string   2
我想问:在以%s做为格式输入时,是自动添加 '\0 '的吧?   输入的“string1“是存放在堆中的吧(我不太确定,谁能确认一下),s1作为指针指向它?

那么如下程序:
以下程序:
#include   <stdio.h>
void   main()
{
char   s1[3];
printf( "sizeof(s1)=%d ",sizeof(s1));
scanf( "%s%s ",s1);
printf( "s1=%s ",s1);
printf( "sizeof(s1)=%d ",sizeof(s1));
getch();
}
运行情况:
输入:string1
输出:3   string   3
这里的s1似乎还是被当作指针,并没有当作数组处理,为什么?谢谢。

[解决办法]
#include <stdio.h>
void main()
{
char s1[3];//如果以字符串输入,就只能输入3-1个效字符,否则就会越界
printf( "sizeof(s1)=%d ",sizeof(s1));//sizeof(s1)得到的是s1的类型的长度,测字符串用strlen(s1)
scanf( "%s%s ",s1);//%s是字符串输入格式,%s对应一个字符串
printf( "s1=%s ",s1);
printf( "sizeof(s1)=%d ",sizeof(s1)); //也是测量的s1的类型
getch();
}

热点排行