源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C语言中#define与typedef的互换细节详解

  • 时间:2021-09-05 13:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C语言中#define与typedef的互换细节详解
[u]复制代码[/u] 代码如下:
#include <stdio.h> /*<---------           #define    string    char *            ---->*/ typedef   char *   string;       int main(void) {    string   a[] = {"I", "like", "to", "fight,"},    b[] = {"pinch,", "and", "bight."};    printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);    return 0; }
用#define替换掉typedef的行,并且,已经给出的#define示例不能通过,但是,程序中只要添加一个字符,就可以了. ====================这个问题的解答=========================== 有下面两种定义pStr数据类型的方法,两者有什么不同?哪一种更好一点? typedef char* pStr; #define pStr char*; [b]答案与分析: [/b]通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子: typedef char* pStr1; #define pStr2 char * pStr1 s1, s2; pStr2 s3, s4; 在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。 上例中define语句必须写成 pStr2 s3, *s4; 这这样才能正常执行。 所以程序
[u]复制代码[/u] 代码如下:
#define    string    char *;        int main(void) {    string   a[] = {"I", "like", "to", "fight,"},    *b[] = {"pinch,", "and", "bight."};   /*<--就是这里!!--*/    printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);    return 0; }
========================== 确实很巧妙!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部