【扩展知识6】typedef的使用

【扩展知识】typedef的使用

扩展目录

1.        typedef与#define不同处

2.        typedef的使用

A:typedef与#define不同处

typedef是关键字,具有一种高级数据特性,它能够为已经存在的类型重新命别名(标签)。它的功能与#define相似,但有3个不同之处:(在《C语言第二回》中也有相关的知识点)

1.        与#define不同,typedef给出的符号仅限于类型,而不是绝对值

2.        typedef的解释有编译器,而不是预处理器执行

3.        虽然它的范围有限,但在其受限的范围内。typedef比#define更灵活

B: typedef的使用

Typedef定义的作用域是取决于定义所在的位置。如果在函数内部,它的作用域是局部的;如果定义在函数外部,它将具有全局作用域。

//功能:显示typedef的定义位置决定其的作用域和不支持类型扩展
#include <stdio.h>

typedef int INT32;    //给int命个别名

void print( INT32 num )  //使用int的别名
{
         typedeffloat FLOAT32; //给float命个别名

         printf("%d\n", num );

         return;
}

int main( void )
{
         intn= 10;
         //类型扩展
         unsignedINT32 number;   //报错,typedef定义的别名不支持类型扩展

         //使用float的别名
         FLOAT32  score= 0.0; //报错!!unknown type name 'FLOAT32'

         printf("打印n= " );
         print(n );

         printf("打印score= %f\n", score );

         return0;
}

【指尖的微笑】错误在所难免,希望得到大家的指正^-^

转载时保留原文的链接http://codingit.howbbs.com和http://blog.csdn.net/mirrorsbeyourself

时间: 2024-08-30 03:34:59

【扩展知识6】typedef的使用的相关文章

转 C/C++基础知识:typedef用法小结

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

038改变状态栏的颜色(扩展知识:关于iOS不同版本的消息通知知识)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface ViewController () 4 - (void)userNotificationDidPush:(UIApplication *)appl

【扩展知识4】指针家的野孩子和地址打印

[扩展知识4] 1.        野指针 2.        %p的使用 ( 1 )野指针 定义:野指针"不是NULL指针,是指向"垃圾"内存的指针.[重量级危险人物] 野指针的成因: 1.        指针变量定义时没有初始化. 2.        指针变量free后没有置于NULL. 3.        指针的使用超出范围 程序举例: [ 程序1 ] //指针变量没有初始化 #include<stdio.h> int main( void) { char

【扩展知识2】函数strlen()和非函数sizeof的使用

[扩展知识2]函数strlen()和非函数sizeof的使用 [扩展目录] strlen函数 sizeof ( 1 )函数strlen() 原型:size_tstrlen ( const char * str ); 返回C字符串(仅仅支持此类型)的长度. //strlen()的使用 #include <stdio.h> int main( void ) { chararray[ ]= "zhijiandeweixiao"; //指尖的微笑 //array为数组的首个地址 p

【扩展知识3】数组的一些难事

[扩展知识3]数组的一些难事 扩展目录 1.        &array+ 1 2.        array+1 3.        &array[ 0 ]+ 1 关于&array+ .array+ 1 和&array[0]+ 1的问题,特别难缠,特难搞懂~-~.所以今天拿来讲解讲解. 由于数组中的各元素的存储单元是连续分配的,因此可以用指针形式来访问数组,数组名就是该数字的首个地址. 如: intarray[100]; array 就是该数组的首地址,其值等于&

[面试题总结及扩展知识]同一进程中的线程共享的资源

又是一道腾讯2014年的面试题: A,栈   B,数据段    C,寄存器组    D,文件描述符 这是解释以及相对应的扩展知识: 线程的共性如下: 线程共享的环境包括:进程代码段. 进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯). 进程打开的文件描述符. 信号的处理器.  进程的当前目录和进程用户ID与进程组ID. 线程的个性如下: 1.线程ID     每个线程都有自己的线程ID,这个ID在本进程中是唯一的.进程用此来标识线程. 2.寄存器组的值     由于线程间是并

【扩展知识3】一些困难的数组

[扩展知识3]一些困难的数组 扩展文件夹 1.        &array+ 1 2.        array+1 3.        &array[ 0 ]+ 1 关于&array+ .array+ 1 和&array[0]+ 1的问题.特别难缠,特难搞懂~-~. 所以今天拿来解说解说. 因为数组中的各元素的存储单元是连续分配的,因此能够用指针形式来訪问数组.数组名就是该数字的首个地址. 如: intarray[100]; array 就是该数组的首地址,其值等于&am

【扩展知识2】学习一些重要的知识

[扩展知识二]学习一些重要的知识 [扩展目录] 1.      布尔型,浮点型.指针的变量与0值得比较 2.      类型转换 3.      关键字sizeof和strlen()函数 A:bool变量与0值得比较 布尔型,用于表示布尔值,即逻辑值TRUE(真)和FALSE (假).在C语言中非零即为真,零就为假. 较合理的写法是: //测试环境:win7_32+VC++6.0.有的编译器可能不识bool //bool变量与0,1的比较 #include <stdio.h> int main

java Map扩展知识练习

/* map扩展知识. map集合被使用是因为映射关系. 编程实现以下数据: "yureban" -> "01" "zhangsan" "yureban" -> "02" "lisi" "jiuyeban" -> "01" "wangwu" "jiuyeban" -> "02