(1)以下程序会出现什么问题:
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[4], arr2[5];
if( strlen(arr1[4]) - strlen(arr2[5]) < 0)
printf("arr1的元素比arr2的元素少\n");
else
printf("arr1的元素比arr2的元素多\n");
return 0;
}
答案:
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[4], arr2[5];
if( (int)strlen(arr1[4]) - (int)strlen(arr2[5]) < 0)
printf("arr1的元素比arr2的元素少\n");
else
printf("arr1的元素比arr2的元素多\n");
return 0;
}
解析:strlen()函数的返回值是unsigned long类型的,相减无法得到负数.
(2)若有说明: int *p, a = 1, b;以下程序段正确吗?
scanf("%d", &b);
*p = b;
答案:错
解析:p是野指针,不能赋值给一个野指针指向的变量
|
|