-
这不是谁取代谁的问题,typedef 没有定义。 我认为可以这样理解:你可以把typedef看作是一个普通的定义,pstring相当于定义了string*类型的变量,然后pstring str就像复制一个类型的变量作为pstring。
const pstring ptr,首先psstring是一个指针,所以ptr是一个const指针,在定义它的时候必须初始化。
-
它是 psstring 替换 string*
对于你添加的问题,我进行了实验,确实如你所说。 我不太了解,所以我又做了两组实验:
1. 如果定义为define pstring string*,可以编译(因为是直接替换的,所以和const string* pstr是一样的),就是问题就是不能简单地把typedef理解为替换,也就是define。
2. 那么typedef和define有什么区别,我定义typedef const string* pstring; 也通过了。 也就是说,const pstring 编译器不认为它是一个类型(我不知道该怎么想)。
知道就是知道,不知道就是不知道,我看了一眼,发现这个知道:
我不知道你是否明白。
-
typedef string * pstring;
如果使用 psstring 表示字符串 * string * 是指向字符串类型的指针,则使用 psstring 定义的 ptr 也是指向字符串类型的指针。
Pstring 是 string * 的另一个名称,只是为了记忆。
-
请从右到左阅读所有定义。
typedef string *pstring;
从右边看,pstring 是指向字符串对象的指针。
const string * p;
p 是指向 String 对象的指针,该对象是 const。 所以 p 是指向 const 字符串的指针。
string* const p;
p 是 const,const 的指针,指向字符串,所以 p 是指向字符串的 const 指针。
const string* const p;
p 是 const,const 的指针指向 String,而这个 String 对象是 const,所以 p 是指向 const 字符串的 const 指针。
-
1) Typedef 可以声明各种类型名,但不能用于定义变量。可以使用 typedef 来声明数组类型和字符串类型,使用起来更方便。
2) 使用 typedef 只会将类型名称添加到现有类型,但不会创建新类型。
3)当同一类型的数据(特别是数组、指针、结构体、公共资源等数据)在不同的源文件中使用时,通常使用typedef来声明一些数据类型,将它们分别放在头文件中,然后使用include命令将它们包含在需要用于提高编程效率的文件中。
4)typedef的使用有利于程序的泛化和可移植性。有时程序依赖于硬件功能,而 typedef 很容易移植。
-
typedef int integer;使用标识符整数指定 int 类型。
typedef float real;指定 real 表示浮点类型。
这样,以下两行是等效的:
int i,j; float a,b;
integer i,j; real a,b;在程序中,整数变量专门用于计数,计数可以用作整数类型名称:
typedef int count;指定 count 用于表示 int 类型。
count i,j;将变量 i,j 定义为计数类型,即 int 类型在程序中将变量 i,j 定义为计数类型,使人们更容易一目了然地知道它们是用于计数的。 您还可以声明结构类型:
typedef struct 请注意,关键字 typedef 在 struct 之前使用,以指示已声明新名称。
int month; int day; int year; }date;请注意,date 是新类型的名称,而不是 struct 变量的名称。
声明日期的新类型名称表示上面指定的结构类型之一。 这样就可以用日期定义变量:
date birthday; date *p;p 是指向此结构类型数据的指针。
它还可以进一步:
typedef int num[100];将 num 声明为整数数组类型,包含 100 个元素 num n; 将 n 定义为包含 100 个整数元素的数组。
typedef char *string;将字符串声明为字符指针类型字符串 p,s[10]; p 是字符指针变量,s 是指针肢数组(有 10 个元素)。
typedef int (*pointer)( 声明指针指向指针日历肢体类型的函数,该函数返回整数值 pointer p1,p2; p1 和 p2 是指针变量。