有如下定义语句:typedef char* PCHAR;,下列语句正确的是( ) A. 语句:PCHAR P;定义了一个字符变量 B. PCHAR p=’a’; C. PCHAR p; char name[5]=”John”; p=name; D. PCHAR p=”Hello”; cout 相关知识点: 试题来源: 解析 C.PCHAR p; char name[5]=”John”; p=name; 反馈 收藏 ...
这是错误的,按照顺序,‘const pstr’被解释为‘char * const’(一个指向 char 的常量指针),而不是‘const char *’(指向常量 char 的指针)。这个问题很容易解决: typedef const char * cpstr; int mystrcmp(cpstr, cpstr); // 现在是正确的 记住: 不管什么时候,只要为指针声明 typedef,那么都要在最终...
比如:char* pa,pb; //它只声明了一个指向字符变量的指针(charpa;) 以及 一个字符变量(char pb;) typedef charPCHAR; PCHAR pa,pb; //同时声明了两个指向字符变量的指针 虽然char *pa,*pb;但是在有很多指针的情况下,typedef的方式更省事。 用途2、 以前的代码中,声明struct新对象的时候,必须带上struct,...
typedefchar * pstr;int mystrcmp(pstr, pstr); 这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘const char *’类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp(): int mystrcmp(const pstr, const pstr); 这是错误的,按照顺序,‘const pstr’被解释为‘char * const’(一个...
可以看出,typedef char* PCHAR;之后,PCHAR是char类型的别名, PCHAR pa,pb;将pa,pb都定义成char类型。 2)定义struct结构体别名 我们知道,当声明一个结构体对象时,必须要带上struct, 格式为:struct 结构体名 对象名; 如下例所示: 1structtagPOINT12{3intx;4inty;5};6structtagPOINT1 p1; ...
就是定义两种类型,名称为PCHAR和LPCH,但实际上都是char *类型,也就是指向char的指针类型。
typedef CHAR * PCHAR;typedef CHAR * LPCH;typedef CHAR * PCH;typedef CHAR * NPSTR;typedef CHAR * LPSTR;typedef CHAR * PSTR 你把*当成指针标实就可以了!所以 typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;PCHAR、LPCH、PCH、NPSTR、LPSTR、PSTR都是代表...
typedef char* PCHAR; PCHAR pa, pb; // 可行 cout << typeid(pa).name() << endl; //Pc cout << typeid(pb).name() << endl; //Pc 为结构体取别名 在声明变量的时候,需要带上 struct,即像下面这样使用: typedef struct info { char name[128]; ...
上述代码是错误的,只有a为字符指针,b仍旧为字符变量。通过#define进行宏定义,仍然是无效的,因为宏定义仅仅是字符替换。以下则可行:(1)typedef char* PCHAR;(2)PCHAR pa, pb;2、用于struct结构体 (1)#include <stdio.h> (2)struct tagPOINT1 (3) { (4)int x;(5)int y;(...
typedefchar*PCHAR;PCHARpa,pb;//同时声明了两个指向字符变量的指针 1. 2. 虽然下面(代码)方式也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。 char *pa, *pb; 用途二: 用在旧的C代码中(具体多旧没有查),帮助struct。