预测以下程序的输出。 难度等级: 菜鸟 问题1
null
C
#include<stdio.h> int main() { typedef int i; i a = 0; printf ( "%d" , a); getchar (); return 0; } |
输出:0 这个程序没有问题。它只是创建一个用户定义的类型 我 并创建一个变量 A. 类型 我 . 问题2
C
#include<stdio.h> int main() { typedef int *i; int j = 10; i *a = &j; printf ( "%d" , **a); getchar (); return 0; } |
输出:编译器错误->指针类型不兼容的初始化。 排队 typedef int*i 使 我 作为int*类型。那么,宣布 A. 方法 A. 是指向指针的指针。在不同的编译器上,错误消息可能不同。
此代码的一个可能正确解决方案是问题4。现在也可以试试这个:
C
#include <stdio.h> int main() { typedef int *i; int j = 10; int *p = &j; i *a = &p; printf ( "%d" , **a); getchar (); return 0; } |
问题3
C
#include<stdio.h> int main() { typedef static int *i; int j; i a = &j; printf ( "%d" , *a); getchar (); return 0; } |
输出:编译器错误->a的多个存储类。 在C语言中,typedef被认为是 存储类 。在不同的编译器上,错误消息可能不同。 问题4
C
#include<stdio.h> int main() { typedef int *i; int j = 10; i a = &j; printf ( "%d" , *a); getchar (); return 0; } |
输出: 10 如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论。 参考资料: http://www.itee.uq.edu.au/~comp2303/Leslie_C_ref/C/SYNTAX/typedef。html http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc03sc03.htm http://msdn.microsoft.com/en-us/library/4x7sfztk.aspx
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END