📜  C指针测试4

📅  最后修改于: 2020-10-23 05:41:20             🧑  作者: Mango

C指针测试4

16)下面给出的程序输出是什么?

#include
main() 
{
   char *x = NULL;
   printf("%c", *x);
}
  1. 0
  2. NULL
  3. 编译错误
  4. 运行时错误

正确的选项是(c)。

说明:

在程序中x指向NULL地址。访问NULL地址无效,因此程序出现运行时错误。

因此,程序的输出为运行时错误。

17)这是分配NULL指针的正确方法吗?

int j=0;
char *p=(char*)j;
  1. Yes
  2. No

正确的选项是(b)。

说明:

上面的空指针分配方法不正确。

正确的方法是:

  1. char * p = 0(或) char * p =( char *)0

18)程序可以在Turbo C中编译吗?

#include
int main()
{
    int b=10, *i;
    void *p;
    i=p=&b;
    i++;
    p++;
    printf("%u %u\n",i, p);
    return 0;
}
  1. Yes
  2. No

正确的选项是(b)。

说明:

在语句p ++中会发生错误,因为我们无法对void指针执行算术运算。

在TurboC中编译上述程序时显示以下错误。

编译PROGRAM.C:

错误PROGRAM.C 8:类型的大小未知或为零。

19)关于下面给出的程序,哪条陈述是正确的?

#include
int main()
{
    int j=10;
    int *i=&j;
    return 0;
}
  1. j是一个指向int的指针,并存储i的地址
  2. i是指向int的指针,并存储j的地址
  3. i和j是指向int的指针
  4. i是一个指向int的指针,并存储j的地址

正确的选项是(d)。

说明:

在程序“ i”中,变量包含指针。因此它是指针变量,指向内存位置中的整数类型。因此,“ i”是一个指向int的指针。

现在,将“ j”的地址分配给“ i”指针,即,将“ j”的地址存储到“ i”位置。

因此,“ i”是一个指向int的指针,它存储着“ j”的地址。

20)下面给出的程序输出是什么?

#include
main()
{ 
   char *p= "Xyz";
   while(*p)
      printf("%c", *p++);
}
  1. Xyz
  2. yz
  3. 运行时错误
  4. 编译错误

正确的选项是(a)。

说明:

在程序中,while循环继续进行,直到* s不等于’\ 0’。首先获取内部循环字符,然后再增加地址。

因此,print语句即printf(“%c”,* p ++);将在输出中printXyz