指针声时,易错问题及其分析

作者在 2011-08-25 21:46:54 发布以下内容
摘自《你必须知道的495个C语言问题》1.5
问:char *p1,p2;这样声明有声明问题?
答:这样的声明没有任何问题,但是它可能不是你想要的。指针声明中的*号并不是基本类型的一部分,它只是包含被声明标示符的声明符(declarator)的一部分。也就是说,在C语言中,声明的语法和解释并非:
      类型 标示符;
而是:
      基本类型 生成基本类型的东西;
其中“生成基本类型的东西”——声明符——或者是一个简单标示符,或者是如同*p、a[10]或f()这样的符号,表明被声明的变量是指向基本类型的指针、基本类型的数组或者返回基本类型的函数。(当然,更加复杂的声明符也可以着这样组成。)
     在问题里的声明中,无论空白的位置暗示什么,基本类型都是char,而第一个声明符是“*p1”因为声明符带有“*”号,所以这表明p1是一个指向char类的指针。而p2的声明符却只有“p2”,因此p2被声明成了普通的char型变量。这可能并非你所希望的。在一行代码中声明两个指针可使用如下方式:char *p1,*p2;
因为*号是声明的一部分,所以最好像上面这样使用空白;写成char*往往导致错误和困惑。
摘自《你必须知道的495个C语言问题》
 
 
 
C语言书摘 | 阅读 802 次
文章评论,共0条
游客请输入验证码
浏览48159次