C++语言程序设计

typedef和define有什么区别?

题目

typedef和define有什么区别?

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下对结构体类型变量的定义中,不正确的是

A.typedef struct aa

{ int n;

float m;

}AA;

AA tdl;

B.#define AA struct aa

AA{ int n;

float m;

} tdl;

C.struct

{ int n;

float m;

} aa;

struct aa tdl;

D.struct

{ int n;

float m;

} tdl;


正确答案:C

第2题:

static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?


正确答案:
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

第3题:

地铁和轻轨有什么区别和联系?


参考答案:联系:都可以建在地下、地面或高架上。都选用轨距为1435毫米的国际标准双轨作为列车轨道(增强轨道的稳定性,减少养护和维修的工作量,增大回流断面和减少杂散电流)。
区别:国际标准:A、B、C三种型号,对应3米、2.8米、2.6米列车宽度。A型或B型列车称地铁,采用5~8节编组列车;C型列车称轻轨(上海8号线除外),2~4节编组列车,列车的车型和编组决定了车轴重量和站台长度。我国标准:轴重相对较轻,单方向输送能力在1万~3万人次的轨道交通系统,称轻轨;每小时客运量3万~8万人次的轨道交通系统,称地铁。

第4题:

软件版和网页版有什么区别

QQ2011版本,网页版和软件版有什么区别?


软件版内容更丰富,不是时时联网,省流量
网页版不保存聊天记录,不能进行一些设置,如皮肤更换等等,但软件版可以进行设置

第5题:

typedef的用法?

#include<stdio.h>

typedef char (*pt)(int);

pt point;

char gl(int a){return 0;}

void main()

{

point=gl;

printf("%d",point(2));

}

我把point(2)改为(*point)(2)也是正确的,那么这两种形式的调用有什么区别没。后者说,各表示什么意义???


typedef用法小结:
 在C语言的情况下,与C++稍有出入。typedef在结构体定义,还有一些数组等地方都大量的用到。归纳一下:
来源一:Using typedef to Curb Miscreant Code
Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。
如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?
使用 typedef 为现有类型创建同义字。
定义易于记忆的类型名
typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如:
typedef int size;
此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:
void measure(size * psz);
size array[4];
size len = file.getlength();
std::vector<size> vs;
typedef 还可以掩饰复合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组:
char line[81];
char text[81];
定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样:
typedef char Line[81];
Line text, secondline;
getline(text);
同样,可以象下面这样隐藏指针语法:
typedef char * pstr;
int mystrcmp(pstr, pstr);
这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘ const char *'类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp():
int mystrcmp(const pstr, const pstr);
用GNU的gcc和g++编译器,是会出现警告的,按照顺序,‘const pstr'被解释为‘char* const‘(一个指向 char 的常量指针),而不是‘char *'(指向char 的指针)。这个问题很容易解决:
typedef const cpstr;
int mystrcmp(cpstr, cpstr); // 现在是正确的
记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身所指对象不会通过指针被修改。
链表中的大概应用
name 保存在结构体单元的name[20] 数组里;
typedef struct node
{
char name[20];
struct node *link;
}stu; 这是前面定义的结构体变量,一个单元包含两个部分,一个用来存储name的数组name[20],一个用来存放下一个单元地址的指向结构体node的指针。假设该单元的地址是p,那么p->name 表示第一部分name[20]的地址,p->link表示第二部分,作用是存放下一个单元的地址。

在C语言的情况下,与C++稍有出入。typedef在结构体定义,还有一些数组等地方都大量的用到。归纳一下:   来源一:Using typedef to Curb Miscreant Code   Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。   typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。   如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?   使用 typedef 为现有类型创建同义字。   定义易于记忆的类型名   typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如:   typedef int size;   此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:   void measure(size * psz);   size array[4];   size len = file.getlength();   std::vector<size> vs;   typedef 还可以掩饰复合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组:   char line[81];   char text[81];   定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样:   typedef char Line[81];   Line text, secondline;   getline(text);   同样,可以象下面这样隐藏指针语法:   typedef char * pstr;   int mystrcmp(pstr, pstr);   这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个‘ const char *'类型的参数。因此,它可能会误导人们象下面这样声明 mystrcmp():   int mystrcmp(const pstr, const pstr);   用GNU的gcc和g++编译器,是会出现警告的,按照顺序,‘const pstr'被解释为‘char* const‘(一个指向 char 的常量指针),而不是‘char *'(指向char 的指针)。这个问题很容易解决:   typedef const cpstr;   int mystrcmp(cpstr, cpstr); // 现在是正确的   记住:不管什么时候,只要为指针声明 typedef,那么都要在最终的 typedef 名称中加一个 const,以使得该指针本身所指对象不会通过指针被修改。   链表中的大概应用   name 保存在结构体单元的name[20] 数组里;   typedef struct node   {   char name[20];   struct node *link;   }stu; 这是前面定义的结构体变量,一个单元包含两个部分,一个用来存储name的数组name[20],一个用来存放下一个单元地址的指向结构体node的指针。假设该单元的地址是p,那么p->name 表示第一部分name[20]的地址,p->link表示第二部分,作用是存放下一个单元的地址

第6题:

下面对 typedef 的叙述中不正确的是( ) 。

A. 用 typedef 可以定义各种类型名,但不能用来定义变量

B. 用 typedef 可以增加新类型

C. 用 typedef 只是将已存在的类型用一个新的标识符来代表

D. 使用 typedef 有利于程序的通用和移植


正确答案:B

第7题:

以下说法中,正确的是______。

A.#define和printf都是C语句

B.#define是C语句,而printf不是

C.printf是C语句,但#define不是

D.#define和printf都不是C语句


正确答案:C

第8题:

typedef()

A.可以定义各种类型名和变量名

B.可以创造新的数据类型

C.和#define作用相同

D.只是对已存在的类型增加一个类型名,不能创造新类型


参考答案:D

第9题:

<%# %> 和 <% %> 有什么区别?


正确答案:
答:<%# %>表示绑定的数据源
     <% %>是服务器端代码块

第10题:

动态网页asp文件和PHP文件有什么区别?

制作动态网页时,asp文件和PHP文件有什么区别?


首先,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。
其次,PHP语法简单,非常易学易用,很利于快速开发各种功能不同的定制网站,PHP因为结构上的缺陷,使的PHP在复杂的大型项目上的开发和维护都比较困难。


ASP默认使用VBScript,而VBScript是由Visual Basic语言简化来的,非常容易上手,所以对新手来说,是做动态网页的入门选择. PHP采用类C语言风格,C/C++编程者可以不用再花多少时间就可以精通PHP. ASP在网页中为解释执行,可以镶嵌在网页代码中.执行速度一般. PHP在网页中也是解释执行,亦可以镶嵌在网页代码中,但是在Zend的帮忙下,可以变成编译执行,速度可以提升几倍. 目前ASP一般使用Access,SQL Server. 其中的Access不适用于大中型网站.SQL Server 要花银子. PHP一般使用MySQL,一个特别的免费的数据库,存取速度也比较快,二者结合使用,会让你的网页程序更加出色.. ASP,安装IIS后就可以使用,由于是在Windows可视化的界面中安装,所以,非常方便,上手容易. PHP,常用的是Apache服务器,强大!可是由于常用于Unix系统下,在Windows下安装时,许多参数设置不方便... PHP中包括有对象,类...在网页编程中加入对象,类之后,会让网页有更大的可维护性.