题目一:请问下面代码输出的结果是多少?
#include<stdio.h>
int main()
{
int *ip1,*ip2,ivalue;
char *cp1,*cp2,cvalue;
ip1 = (int*)0x500;
ip2 = (int*)0x518;
ivalue = ip2 - ip1;
cp1 = (char*)0x500;
cp2 = (char*)0x518;
cvalue = cp2 - cp1;
printf("%d,%d\n",ivalue,cvalue);
return 0;
}
本题主要考察运算时值与类型的关系。对于整数类型的指针,当它自增或自减1时,它实际上是移动的4个字节。
0x518-0x500 = 0x18=24;由于是整数类型,所以ivalue的值是6.同理可知cvalue的值是24.
题目2:请问sprintf()和snprintf()有什么区别?
解答:sprintf()是将一个格式化的字符串输出到一个指定的数组中,snprintf()函数是sprintf()限制字符量的一种用法。
#include<stdio.h>
int main()
{
char a[20];
char *p = "Hello,China";
sprintf(a,"%s",p);
printf("sprintf a is : %s\n",a);
return 0;
}