num=strlen(a);
上面这个语句有两个错误。一是num没有定义,二是strlen是求字符串长度,不能用来求数组长度。其使用必须在前面加头文件string.h。
#include
......
char s[]="asdhdsfhdjg";
int num=strlen(s);
num=strlen(a); 前面你不是声明过了。a[20] 吗?当然不一样了。
第二个程序中你打印的时候用的是num啊printf("%d",*(a+num-1-p));
num你用了strlen计算啊
用strlen()计算的是字符串长度,但是你的a是int型数组,这数组一般是以4个字节存放一个元素,当不满4个字节时,其它字节都是0,所以很可能在第一个字节就为0了,也就是strlen()判断结束的标识,strlen()计算int数组时是不能计算出真正长度的
num=strlen(a), strlen()计算是char数组中人起始位置至‘ \0’的长度, 一个整型相当于4个char, 当输入的数值过小时, 将int转换成char时,必有0产生。如int a=0x00 00 00 01, 相当于 char b[] = { {00, 01, 00, 00}
按你那样用sum和num应该是一样的,都为数组的长度;但strlen()是求字符串的长度,长度和初始化有关,而你的数组a为整形数组,所以不能这么用。要用num = sizeof(a)/sizeof(int)它和初不初始化没有关系,如果是a[20],那么sizeof(a)/sizeof(int)就是20,而sum为你输入的那个数。