汉邦问答 / 问答 / 问答详情

c++中变量标识符命名规则

2023-06-10 08:03:50
TAG: 规则 变量
再也不做站长了

命名规则比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。“匈牙利”法最大的缺点是烦琐,例如

int i, j, k;

float x, y, z;

倘若采用“匈牙利”命名规则,则应当写成:int iI, iJ, ik; // 前缀 i表示int类型float fX, fY, fZ; // 前缀 f表示float类型如此烦琐的程序会让绝大多数程序员无法忍受。据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名

规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。3.1 共性规则本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下,再扩充特定的规则,如3.2节。

【规则3-1-1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。

【规则3-1-2】标识符的长度应当符合“min-length && max-information”原则。

几十年前老ANSI C规定名字不准超过6个字符,现今的C++/C不再有此限制。一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。那么名字是否越长约好?不见得! 例如变量名maxval maxValueUntilOverflow好用。单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

【规则3-1-3】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。别把这两类风格混在一起用。

【规则3-1-4】程序中不要出现仅靠大小写区分的相似的标识符。

例如:

int x, X; // 变量x 与 X 容易混淆void foo(int x); // 函数foo 与FOO容易混淆

void FOO(float x);

【规则3-1-5】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。【规则3-1-6】变量的名字应当使用“名词”或者“形容词+名词”。

例如:

float value;

float oldValue;

float newValue;

【规则3-1-7】全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。

例如:

DrawBox(); // 全局函数

box->Draw(); // 类的成员函数

【规则3-1-8】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

例如:

int minValue;

int maxValue;

int SetValue(…);

int GetValue(…);

【建议3-1-1】尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。3.2 简单的Windows应用程序命名规则

作者对“匈牙利”命名规则做了合理的简化,下述的命名规则简单易用,比较适合于Windows应用软件的开发。

【规则3-2-1】类名和函数名用大写字母开头的单词组合而成。

例如:

class Node; // 类名

class LeafNode; // 类名

void Draw(void); // 函数名

void SetValue(int value); // 函数名l

【规则3-2-2】变量和参数用小写字母开头的单词组合而成。

例如:

BOOL flag;

int drawMode;

【规则3-2-3】常量全用大写的字母,用下划线分割单词。

例如:

const int MAX = 100;const int MAX_LENGTH = 100;

【规则3-2-4】静态变量加前缀s_(表示static)。

例如:

void Init(…)

{

static int s_initValue; // 静态变量

}

【规则3-2-5】如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

例如:

int g_howManyPeople; // 全局变量

int g_howMuchMoney; // 全局变量

【规则3-2-6】类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

例如:

void Object::SetValue(int width, int height)

{

m_width = width;

m_height = height;

}

【规则3-2-7】为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。例如三维图形标准OpenGL的所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。

此后故乡只

  1. 不能重名

  2. 只能由字母、数字和下划线组成(注意是只能)

  3. 数字不能开头

C++基础教程-变量

二、变量程序处理的数据,一般是通过外部键盘输入,先要放到内存的不同单元里,这就是变量,下面我们来看一个练习;1、启动 Geany1)点菜单“应用程序-编程-Geany”启动 Geany ,新建一个 c++ 源程序;2)点菜单“文件-另存为”命令,以“bianliang”为文件名,保存文件到自己的文件夹;2、输入程序代码1)在下面的蓝色代码区域里,输入一行 int a;#include iostreamusing namespace std;int main(int argc, char** argv){int a;return 0;}2)这一行定义了一个变量 a,前面的 int 表示是一个存放整数的整型变量,字符型是 char,只能存一个字母,这句相当于你有了一个水杯,是小的还是大的,根据需要来买;2、给变量赋值1)接着按一下回车键到下一行,输入 a = 20;int a;a = 20;3)这一行是给变量 a 赋值,值最多能取多大要根据变量类型来定,相当于往杯子里倒水,最多装满一杯,再多就会溢出来;4)再到下一行,输入 couta; 显示一下 a 的值,相当于把杯子拿起来看看;int a;a = 20;couta;保存、编译、生成,运行一下,看看显示的结果;5)返回后继续输入下面的内容,重新给变量赋值,相当于又倒了一杯水;int a;a = 20;coutaendl;a = 6;couta;6)保存、编译、生成、运行后,这时 a 里存放的就是 6 了;7)总的来说,变量就像一个盒子,里面可以装东西,可以重复使用,但是后装的内容会覆盖前面的;定义和赋值可以一块儿进行,例如 int a = 20; 也是很好的;#include iostreamusing namespace std;int main(int argc, char** argv){int a;a = 20;coutaendl;a = 6;couta;return 0;}
2023-06-09 15:05:151

c++定义变量?

头文件中没加 using namespace std;或者std::string id;std::string name;std::string tel;
2023-06-09 15:05:243

c++定义变量类型

int整型,char字符型,double实型。一般这三个就够了。
2023-06-09 15:05:336

C++中的变量是什么东西?

值可变的量
2023-06-09 15:05:494

c++全局变量怎么定义

2023-06-09 15:05:591

c/c++如何判断变量的数据类型?

敢问你这个变量要怎么输入?
2023-06-09 15:06:095

C++中定义变量有哪些方法?

首先说明变量的类型,然后是变量的名称,中间必须隔开,可以是空格,制表符,回车等,但必须隔开。最后加上分号表明语句结束。例如:charc;inta;doublet;等等都可以。
2023-06-09 15:06:281

C++中有哪些类型的变量?

short、int、long和long long类型通过使用不同数目的位来存储值(关于位的概念自行了解),最多能够表示4中不同的整数宽度。C++提供了一种灵活的标准,它确保了最小长度(从C语言借鉴而来),如下:1. short 至少16位2. int 至少与 short 一样长3. long 至少 32 位,且至少与 int 一样长。具体区别如图:拓展资料:长整型是计算机程序语言,是程序设计中数据类型的一种表现方式,一般情况下用long 表示长整型。 long 有符号64位整数,范围是-2^63-2^63 -1 Int64。计算机中的一个基本的专业术语。整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。是一种智能的计算方式。参考资料:新浪博客-原创
2023-06-09 15:06:351

C++中如何定义变量

简单说:你要定义一个整形变量就是直接“类型 变量名;”就行。例如定一个叫做a的整形变量“int a;”详细说明: 在C++中,变量声明(declaration)只有在使用extern关键字时才成立,其他情况下都是定义(definition),而在使用extern的同时给变量赋初始值,则声明变为定义,extern关键字也将被编译器忽略。C++变量的作用域缺省情况下是全局的,也就是对多个源文件可见,比如说,如果在a.cpp和b.cpp中都有 int a;则编译器链接两个文件时会报告错误,“变量重复定义”。因此,要使变量定义只对该源文件可见,就要显式加上static关键字。因此,我们可以想到,如果在a.cpp中有 extern int a;而在b.cpp中有 static int a = 9;那么,编译器链接时会给出错误信息,“找不到a的定义”,因为a的定义在b.cpp并只对该文件可见,a.cpp找不到a的定义因此出错。 变量的声明和定义是比较容易混淆的概念,因此记住一点,除非有extern关键字,否则都是变量的定义。由此,我们可以归纳出几点好的程序设计风格: 1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。 2. 尽量使用static关键字把变量定义限制于该源文件作用域内,除非该变量被设计成全局的。例外情况是const变量和typedef类型,在《The C++ Programming Language》9.2节中说到,const和typedef缺省作用域是局部的,因此不需要static来显式声明。因此,在.h文件中放置const变量定义不会产生问题,编译器会给每个引用该.h文件的源文件产生一份该const变量的局部定义,就像该变量是定义于该源文件中一样。大家也不用太担心编译器这么做会浪费空间,因为编译器优化过程一般会把有相同值的const变量进行合并。 对于static关键字,要多说几句的是,static一般有两种意思,当修饰函数定义里的变量或者类成员变量时,称作静态变量;修饰其他变量时,称作局部变量。为防止混淆,一般不要特意给局部变量加上static关键字。除了static关键字,namespace也可以使变量定义成为局部的。
2023-06-09 15:07:041

C++的变量为什么定义是要赋值?

没人说c++定义变量的时候必须赋值,赋值只是为了代码的简洁既然是 int main()那么返回一切int的值都是可以的,没人规定一定只能返回0
2023-06-09 15:07:252

C++变量有哪些类型?

和C的差不多,就多了一个类(class).
2023-06-09 15:07:3510

c++ 如何定义一个任何类型的变量? 定义之后又如何使用?

其实这个问题很好解决的,因为c++中有函数模板的,他的定义形式是:template<class type>或者是template<typename type>这样说你可能不太明白,咱们举个例子怎么用吧!比如说求两个数的大小:#include<iostream>using namespace std;template <class T>//定义一个类型为T 但是不确定是什么类型T max(T m1,T m2){return(m1>m2)?m1:m2;}void main(){ cout<<max<int>(2,5)<<" "<<max<double>(2.0,5.0)<<endl;//这里可以用什么类型都行}不知道是不是你想要的答案!希望可以帮助你!
2023-06-09 15:07:591

c++变量、参数前加“*”什么意思?

变量前加*号,只有在变量为指针情况下才是百合法的。当*用于定义时,是标明该变量为指针类型。指针变量是存放一个变量地址的变量,不同于其他类型变量,它是专门用来存放内存地址的,也称为地址变量。定义指针变量的一般形式为:类型说明符*变量名。类型说明符表示指针变量所指向变量的数据类型;*表示这是一个指针变量;变量名表示定义的指针变量名,其值是一个地址,例如:char*p1;表示p1是一个指针变量,它的值是某个字符变量的地址。扩展资料:C语言中指 针初始化是指 给所定义的指 针变量赋初值。 指针变量在被创建后, 如果不被赋值, 他的缺省值是随机的 ,它的指向是不明确的, 这样的指针形象地称为“野指针”。野指针是很危险的, 容易造成程序出错, 且程序本身无法判断指针指向是否合法。指针变量初始化时避免野指针的方法: 可以在指针定义后, 赋值NULL空值。上面两行代码的含义是, 指针变量p被赋值为空。虽然定义了一个指针变量, 但是它并不指向任何存储空间。
2023-06-09 15:08:081

c++ 如何定义一个任何类型的变量? 定义之后又如何使用?

/*********************************用模板函数********************************/#include<iostream.h>template<typename T>T a; // T可以说任意类型T max(T a, Tb){ if(a>b) return a; else return b; }void main(){ cout<<max(1,4)<<endl;cout<<max(1.5,2.5)<<endl;}
2023-06-09 15:08:342

c++中如何定义符号变量

这符号变量是啥意思?#defineM是宏定义,宏定义就是一个替换,大部分的时候C++都使用const定义常量。
2023-06-09 15:08:413

C++中怎么定义多个变量

首先说明变量的类型,然后是变量的名称,中间必须隔开,可以是空格,制表符,回车等,但必须隔开。最后加上分号表明语句结束。例如:charc;inta;doublet;等等都可以。
2023-06-09 15:08:502

C++中在头文件里定义的变量的作用范围是什么?

声明新的类型名来代替原有的类型名比如,typedef int INTERGER; 或 typedef float REAL;相当于用INTERGER来代表int类型,用REAL来代表float习惯上把用typedef声明的类型用大写字母表示
2023-06-09 15:09:186

c++代码变量前面加个^是什么意思

怎么会把这当成c++代码,这一点都不像c++代码啊……
2023-06-09 15:09:353

C++字符变量char ch=‘b’ 和char ch=97这两个怎么理解?区别是?

char ch="b" 是常规的将字符b赋值给字符变量ch了。char ch=97 是将字符对应的ASCII码值赋值给了字符变量ch,此处如果输出ch的值的话,结果为a。这是对字符变量的两种赋值方式,可以给字符变量直接赋值字符本身,如ch="b",也可以给字符变量赋值字符对应的ASCII值,如ch=98,效果是一样的(直接输出均为字符b),只是表现不一样罢了。
2023-06-09 15:09:431

c++ 指针变量p 那!p是什么意思

非p
2023-06-09 15:09:517

C++怎么定义字符串变量

与c语言相同:charstr[256];或者使用字符串类:Stringstr;可以百度这个类,看能怎么用。
2023-06-09 15:10:232

c++中如何定义符号变量

这符号变量是啥意思?#define M 是宏定义,宏定义就是一个替换,大部分的时候C++都使用const定义常量。
2023-06-09 15:10:303

c++中如何定义字符型变量

#include <iostream> using namespace std; int main () { char a,b; int c,d; cin>>a>>b;c=(int)a-96; d=(int)b-96; cout<<c<<" "<<d<<endl; system ("pause"); return 0; }
2023-06-09 15:10:508

c++中如何定义一个字符串类型的变量

st=
2023-06-09 15:11:1614

c++ 全局变量

又见“LS错误”男,在百度逛了一会,看到只要是有幻の上帝回答的,肯定有“LS错误”或者“ISO”,是显摆呢,还是想压低别人提高自己呢?说5楼说法对,也能讲的通,你信吗?标准男
2023-06-09 15:11:409

c++定义变量问题。

呵呵……不麻烦……很高兴可以为你解答……“句柄的地址怎么看?”不太明白你的意思?你是说查看内存0xFFFFFF?如果是的话,可以在调试的时候查看,比如:如果用gdb调试的话,暂停的时候用examine0xFFFFFF来查看,如果用MS-VC,可以在memory窗格中直接输入0xFFFFFF。也可以设置断点之后跟进的时候查看,gdb:print;ms-vc:variables窗格。要注意0xFFFFFF作为句柄的时候是不合法的……我回答的时候仅仅作为示例如果想要在运行的时候显示,可以加入如下语句:printf("handle:%x",handle);win32编程的话,就加:charaddr[1024];ssprintf(addr,"handle:%x",handle);MessageBox(NULL,addr,"handle",MB_OK);
2023-06-09 15:11:571

在c++中变量后只有一个减号是什么意思

+=:加法赋值运算符,将运算符前面的变量加上后面的值再赋值给前面的变量。-=:减法赋值运算符,将运算符前面的变量减去后面的值再赋值给前面的变量。a+=b; 等价于a=a+ba-=b; 等价于a=a-b
2023-06-09 15:12:0812

C++字符变量char ch=‘b’ 和char ch=97这两个怎么理解?区别是?

charch="b"是常规的将字符b赋值给字符变量ch了。charch=97是将字符对应的ASCII码值赋值给了字符变量ch,此处如果输出ch的值的话,结果为a。这是对字符变量的两种赋值方式,可以给字符变量直接赋值字符本身,如ch="b",也可以给字符变量赋值字符对应的ASCII值,如ch=98,效果是一样的(直接输出均为字符b),只是表现不一样罢了。
2023-06-09 15:12:381

C++如何给静态变量数组给予初值

类似于这样啊const int a[10] = {1,2,3,4,5,6,7,8,9,0};
2023-06-09 15:12:461

c++中变量的地址是什么类型的

应当是无符号整型的
2023-06-09 15:12:532

C/C++中的变量定义与声明

第一种
2023-06-09 15:13:0310

c++变量、参数前加“*”什么意思?

一个指针
2023-06-09 15:13:424

c++如何定义位变量

类型 标示符(自己起的名字)
2023-06-09 15:14:105

c++如何定义位变量

在c++中,要定义一个常量,有两种主要的做法1.符号常量(#define)2.常值变量(const)符号常量的定义方式,其实与c++本身没有关系,它是一个编译器指令,或者称为预处理指令(有关的预处理指令还有#include,#ifdefine等等)。它的用法如下#definepi3.1415926这样的语法就定义了一个叫做pi的符号常量,它的值指定为3.1415926.【注意】因为它其实不是c++语法,所以它不需要(也不能)用分号结束。
2023-06-09 15:14:251

c++ 匿名变量是个什么样的东西

匿名变量就是没有名字的变量。在运算过程中会产生。new运算符也可以建立一个匿名变量
2023-06-09 15:14:322

C++寄存器变量问题

寄存器寻址比内存快。registerinti;for(i=0;i<10000;++i)语句;定义后,和普通变量一样使用。初学者最好不要指定register,会妨碍编译器的自动优化。你可以看看汇编代码的区别。
2023-06-09 15:14:391

如何在C++的头文件中对变量赋值

根据头文件中变量的定义形式,作用范围有所不同,有如下几种情况:1 在头文件中定义静态变量,如static TYPE var = init_value;其中= init_value部分可以省略。等效于在每个引用该头文件的源文件中,定义一个变量名为var, 类型为TYPE的静态全局变量。每个文件中的var变量均归属于本源文件,各文件中的互不相同。作用域为引用头文件的源文件范围内。2 在头文件中定义变量,但是不带初始化值。TYPE var;这种情况下,相当于定义了一个全局变量var, 同时在所有引用该头文件的源文件中声明。其作用域为整个项目的所有源文件。在引用了该头文件的源文件中可以直接使用var, 在没有引用该头文件的源文件中,可以通过extern TYPE var;进行声明,从而使用var。3 在头文件中定义了带初始化值的变量。TYPE var = init_value;当项目中,只有一个源文件中引用了该头文件时,等同于在源文件中定义了这个全局变量,可在该文件中使用var。 在其它源文件中可以通过extern TYPE var;进行声明,从而使用var。所以这种情况下变量的作用域也是整个项目。需要注意的是,这种形式一旦在超过一个源文件中引用该头文件,则会按照在不同文件中定义同名全局变量处理,这时会编译出错,自然也就没有作用域的说法了。
2023-06-09 15:14:482

C++ 变量后面加冒号:什么意思????

class List_container : public Container 这个冒号是继承的意思List_container(initializer_list<double> il) : ld{il} { } 这个冒号是在构造函数设置Id变量的初值
2023-06-09 15:15:251

c++中的状态变量是什么

拉高速是
2023-06-09 15:15:324

C/C++中定义全局变量的几种方法及区别

这个问题需要回答的量很大,给你个博客链接吧,里面介绍了具体的区别。网页链接
2023-06-09 15:15:422

cc++如何定义变量范围

比较笨的方法就是用调教约束,用if进行判断
2023-06-09 15:15:515

c++怎么声明变量?

对于3.7:全局就是对整个文件有效,局部只对这个函数有效!
2023-06-09 15:16:073

C/C++定义全局变量/常量几种方法的区别

全局变量只有一种定义方法,就是定义在函数外面全局变量太长而言可以用变量也可以用宏const double pi=3.14;#define PI 3.14前者是语句最后要分号,后者不要
2023-06-09 15:16:141

C/C++变量名的实质是什么

变量名只是一个标志,让编译器识别!
2023-06-09 15:16:235

c++中我想定义一个名字中带变量的

这种情况下,局部变量会屏蔽掉名字空间的变量,要访问名字空间内的变量就要加上域前缀比如flag=3;//该flag为main函数内局部变量abc::flag=4;//名字空间变量
2023-06-09 15:16:391

C++连续输入变量的值的问题

有没有语法错误没看, 但是你输入的地方 cin>>no1>>name1>>deg1; p[i++].setdata(no1,"asd",100);你既然要输入变量, 干啥还要传进去常量?
2023-06-09 15:16:461

c++类定义变量

A ** a
2023-06-09 15:17:045

C++ 变量的命名

首先,定义数组时数组的大小必须是一个常数,不能用变量。你说的两种定义方式,都是先定义常数的大小,这样做的好处是,当以后需要修改代码中这些数组的大小定义时,只需要修改常数的定义就可以了,而不需要一一找到每一个数组的定义,有利于代码维护,这是一个很重要的编程技巧。第二种采用对常数位移的方式,其实并不能提高运算速度,因为现在的编译器会对代码进行“编译优化”,对于所有出现在代码中,可以在编译时就能计算出数值的常量表达式,编译器会计算出来并将结果编译在程序中,也就是说常量表达式不用在程序运行时运算了(结果已经由编译器放在程序中相应的位置了)。所以它的作用并不是提高运算速度,也许只是代码逻辑上的需要。只要数组大小的定义是一个常量就可以,而不管对常量进行何种变化,它都还是一个常量,所以第二种方式和第一种方式并没有本质上的区别。
2023-06-09 15:17:211

c++结构体变量

你想累死我呀?
2023-06-09 15:17:306

C++ 全局变量怎么不变呢?

void CAboutDlg::Message()//在这个对话框类里面显示另一个类的数值{CMFCMainDlg mdlg;//这个是临时对象,和m_test = _ttoi(m_strtest);这里的CMFCMainDlg是两个对象,你改了其中一个的m_test,不会反映到另一个中去..............}最简单的改法,把m_test声明为static变量
2023-06-09 15:17:431