📜  C 程序的输出 |设置 10

📅  最后修改于: 2022-05-13 01:56:11.058000             🧑  作者: Mango

C 程序的输出 |设置 10

预测以下程序的输出。
难度等级:菜鸟
问题 1

c
#include
int main()
{
   typedef int i;
   i a = 0;   
   printf("%d", a);
   getchar();
   return 0;
}


c
#include
int main()
{
  typedef int *i;
  int j = 10;
  i *a = &j;   
  printf("%d", **a);
  getchar();
  return 0;
}


C
#include 
 
int main()
{
  typedef int *i;
  int j = 10;
  int *p = &j;
  i *a = &p;   
  printf("%d", **a);
  getchar();
  return 0;
}


c
#include
int main()
{
  typedef static int *i;
  int j;
  i a = &j;   
  printf("%d", *a);
  getchar();
  return 0;
}


c
#include
int main()
{
  typedef int *i;
  int j = 10;
  i a = &j;   
  printf("%d", *a);
  getchar();
  return 0;
}


输出:0
程序没有问题。它简单地创建一个用户定义的I型并创建类型i的变量a。
问题2

C

#include
int main()
{
  typedef int *i;
  int j = 10;
  i *a = &j;   
  printf("%d", **a);
  getchar();
  return 0;
}   

输出:编译器错误 -> 使用不兼容的指针类型初始化。
typedef int *i使i成为 int * 类型。所以,一个声明意味着是指针的指针。错误消息在不同的编译器上可能不同。

此代码的一种可能的正确解决方案在问题 4 中。现在也试试这个:

C

#include 
 
int main()
{
  typedef int *i;
  int j = 10;
  int *p = &j;
  i *a = &p;   
  printf("%d", **a);
  getchar();
  return 0;
}

问题 3

C

#include
int main()
{
  typedef static int *i;
  int j;
  i a = &j;   
  printf("%d", *a);
  getchar();
  return 0;
}   

输出:编译器错误 -> a 的多个存储类。
在 C 中,typedef 被认为是一个存储类。错误消息在不同的编译器上可能不同。
问题 4

C

#include
int main()
{
  typedef int *i;
  int j = 10;
  i a = &j;   
  printf("%d", *a);
  getchar();
  return 0;
}