📅  最后修改于: 2020-10-23 05:41:20             🧑  作者: Mango
#include
main()
{
char *x = NULL;
printf("%c", *x);
}
正确的选项是(c)。
说明:
在程序中x指向NULL地址。访问NULL地址无效,因此程序出现运行时错误。
因此,程序的输出为运行时错误。
int j=0;
char *p=(char*)j;
正确的选项是(b)。
说明:
上面的空指针分配方法不正确。
正确的方法是:
#include
int main()
{
int b=10, *i;
void *p;
i=p=&b;
i++;
p++;
printf("%u %u\n",i, p);
return 0;
}
正确的选项是(b)。
说明:
在语句p ++中会发生错误,因为我们无法对void指针执行算术运算。
在TurboC中编译上述程序时显示以下错误。
编译PROGRAM.C:
错误PROGRAM.C 8:类型的大小未知或为零。
#include
int main()
{
int j=10;
int *i=&j;
return 0;
}
正确的选项是(d)。
说明:
在程序“ i”中,变量包含指针。因此它是指针变量,指向内存位置中的整数类型。因此,“ i”是一个指向int的指针。
现在,将“ j”的地址分配给“ i”指针,即,将“ j”的地址存储到“ i”位置。
因此,“ i”是一个指向int的指针,它存储着“ j”的地址。
#include
main()
{
char *p= "Xyz";
while(*p)
printf("%c", *p++);
}
正确的选项是(a)。
说明:
在程序中,while循环继续进行,直到* s不等于’\ 0’。首先获取内部循环字符,然后再增加地址。
因此,print语句即printf(“%c”,* p ++);将在输出中printXyz 。