C typedef 使用

typedef 定义数组类型

typedef
char Line[81];      //Line是char[81]   
(而不是说char是line[81])

Line text, secondline;

typedef
int mat4by4[4][4];    //4*4的二维数组

mat4by4 mymat;

typedef 定义指针类型

  typedef char * pstr;

  int mystrcmp(pstr, pstr);

  这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘const char
*‘类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp():

  int mystrcmp(const pstr, const pstr);

  这是错误的,按照顺序,‘const
pstr‘被解释为‘char * const‘(一个指向 char 的常量指针),而不是‘const char *‘(指向常量 char
的指针)
。这个问题很容易解决:

  typedef const char * cpstr;

  int mystrcmp(cpstr, cpstr); // 现在是正确的

  记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个
const,以使得该指针本身是常量,而不是对象。

转自:http://www.cnblogs.com/rixinren/archive/2010/04/25/1719752.html

时间: 2024-10-11 19:12:27

C typedef 使用的相关文章

类型别名(define与typedef)

#define NEW OLD //使用预处理器的方法,为OLD定义一个新名称NEW,使用define定义的类型别名,会在预处理的过程中对NEW进行“单纯”的替换,例如: #define N 3+2 int i = N * 2; //预处理后,将会变成 int i = 3 + 2 * 2; //i 的结果将会是7 typedef typeName aliasName; //使用关键字typedef来创建别名,typedef不会创建新的类型,而只是为已知类型创建一个新名称. 两者比较: typed

c++ typedef和#define的作用范围

typedef: 如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾: 如果放在某个函数内,定义域就是从定义开始直到该函数结尾: #define: 不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾. define在同一编译单元内部,就算在不同的命名空间内,其作用范围不变.也就是从定义处一直到文件介绍. 看下面这个例子: Main.cpp /** * @file Main.cpp * @author chenjiashou([email protected])

define与typedef

#define与typedef有相似之处,但二者有本质区别 1 #define INTEGER int 和 typedef int INTEGER; 程序中INTEGER都可当做int使用,前者是预处理的宏代换,将程序中所有INTEGER先替换为int再进行编译,并没有产生新的名字:而后者是为int取了一个新的别名. 1 typerdef struct 2 { 3 int num; 4 char count; 5 }STUDENT;//STUDENT 是类型别名,注意它与直接定义结构体变量的区别

typedef与define宏定义用于声明新的类型之间的区别

摘自<c专家编程> typedef可以看成一种彻底的封装类型,在typedef声明类型之后不能再往里面增加其他的内容. 例子: #define peach int unsigned peach i; //没问题 typedef int banana; unsigned banana i; //错误,不能增加unsigned #define宏定义只是用于简单的替换 #define int_ptr int * int_ptr chalk, cheese; int * chalk, cheese;

关于typedef的用法总结

不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法. 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量: 以下则可行: typedef char* PCHAR; PCHAR pa, pb; 这种用法很有用,特别是char

C及C++中typedef的简单使用指南

又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客.于是我就想把我理解的东西整理下来. 一.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化

typedef的用法

第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量:以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省

typedef的使用3

#include <stdio.h> #include <string.h>//不加还能跑,加上反而跑不了了...笑哭 #pragma warning(disable:4996)//要这句跟上面那个包含放在一起.否则会有一个警告组织编译. //字符串拷贝函数: const char * myStrcat(const char *,const char *); typedef const char * MYSTRCAT1(const char *,const char *); //这

typedef的使用1

#include <stdio.h> #include <string.h> //#define _CRT_SRCURE_NO_WARNING #pragma warning(disable:4996) typedef unsigned int uint; typedef unsigned char byte; struct student { int ID; char *name; int age; }; //这样我们之前写的学生类 就会有一个更像javaBean的名字 Stud

struct和typedef struct

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct