新手学C语言指针,请高手帮忙看看代码!

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:46:43
#include "stdio.h"
main()
{
int *p;
int num=0;
int a[]={1,2,3,4,5,6,7};
p=a;
while(p)
{
num++;
p++;
}

printf("%d",num);

}
运行后结果是35;不是7;
请高手帮忙看看
这个程序是用来统计一个数组内数的个数,a的大小是不知道的。为了方便随便输入几个数;
谢谢几位的回答; 特别是三楼的,确实运行出答案是7;
但是 如果我的a数组的内容变成 a[]={100,200,300,400,500,600,700};
按照你的方法就不行了。

二楼的说法前面的说法我同意,但是程序有问题,最后一个输出类型上应该%c改成%d较好,另外还一个跟你程序中有处错误相同。
即在while循环条件句中不能填P,因为P是个指针类型,要加个*号才是指向数组的内容。如果按照二楼的思路,程序这样改下就能输出7.
#include "stdio.h"
main()
{
char *p;
int num=0;
char a[]="1234567";
p=a;
while(*p!='\0')
{
num++;
p++;
}

printf("%d",num);

}

问题补充回答:注意数组是char类型,所以每一个数字都视为一个字符,包括逗号“,”。

注意你定义的是一个整型数组,不是字符型,所以结束没有'\0'的标志,你不能那样写while(p)是不对的,你输出35是碰着在内存里面的存储数组的地方的后面的第28个地方有一个\0,这个数字是随即的应该~~你要想那样你吧改一下
#include "stdio.h"
main()
{
char *p;
int num=0;
char a[]="1234567";
p=a;
while(p)
{
num++;
p++;
}

printf("%c",num);

}

谢谢楼下的改正,我刚刚疏忽了,不好意思实在是~~~

#include "stdio.h"
int main()
{
int *p;
int num=0;
int a[]={1,2,3,4,5,6,7};
p=a;
while(p&