当前位置:首页 » 编程语言 » c语言中可以声明哪些变量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中可以声明哪些变量

发布时间: 2022-12-11 05:40:21

c语言中,什么是全局变量,全局函数,如何声明

1、记住一条就够了:在函数之外定义的变量就是全局变量。用static修饰的变量可以是全局的,也可以是局部的,所以说“用static修饰的变量是全局变量”是错误的。用static修饰的变量的生命周期与全局变量一样,但可见性仍分全局和局部。 2、全局变量在整个c文件中都能使用,而局部变量在其作用域内才能使用,举个例子: int f = 7;// 这个是全局变量int myadd(int a, int b){int c = a + b;// c是局部变量,只能在myadd中使用return c;}int main(void){printf("%d\n", c);// 因为c是myadd中定义的局部变量,这里会报错。printf("%d\n", f);// f是全局变量,这句是正确的。}

⑵ c语言有哪几种变量如何定义这些变量举例说明

基本的数据类型有:整形、实型、字符型、指针型等
扩展的数据类型有:数组,结构体,联合、共用体等
还可以有自定义的类型。

以下是基本类型的详细的说明
最好找本C语言的书看看,纸介质版的或电子版的都行,建议看谭诰强的c程序设计,最新的是第三版,本人学习时是二版

整型量

整型量包括整型常量、整型变量。整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。

整型常量

1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
以下各数是合法的八进制数:
015(十进制为13) 0101(十进制为65) 0177777(十进制为65535)
以下各数不是合法的八进制数:
256(无前缀0) 03A2(包含了非八进制数码) -0127(出现了负号)

2.十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。
以下各数是合法的十六进制整常数:
0X2A(十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535)
以下各数不是合法的十六进制整常数:
5A (无前缀0X) 0X3H (含有非十六进制数码)

3.十进制整常数
十进制整常数没有前缀。其数码为0~9。
以下各数是合法的十进制整常数:
237 -568 65535 1627
以下各数不是合法的十进制整常数:
023 (不能有前导0) 23D (含有非十进制数码)

在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果不正确。4.整型常数的后缀在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如:
十进制长整常数 158L (十进制为158) 358000L (十进制为-358000)
八进制长整常数 012L (十进制为10) 077L (十进制为63) 0200000L (十进制为65536)
十六进制长整常数 0X15L (十进制为21) 0XA5L (十进制为165) 0X10000L (十进制为65536)

长整数158L和基本整常数158 在数值上并无区别。但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,只分配2 个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如: 358u,0x38Au,235Lu 均为无符号数。前缀,后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。

整型变量

整型变量可分为以下几类:
1.基本型
类型说明符为int,在内存中占2个字节,其取值为基本整常数。
2.短整量
类型说明符为short int或short'C110F1。所占字节和取值范围均与基本型相同。
3.长整型
类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。
4.无符号型
类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
(1)无符号基本型 类型说明符为unsigned int或unsigned。
(2)无符号短整型 类型说明符为unsigned short
(3)无符号长整型 类型说明符为unsigned long
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。 下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。
类型说明符 数的范围 分配字节数
int -32768~32767 ■■
short int -32768~32767 ■■
signed int -32768~32767 ■■
unsigned int 0~65535 ■■
long int -2147483648~2147483647 ■■■■
unsigned long 0~4294967295 ■■■■
整型变量的说明
变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,...; 例如:
int a,b,c; (a,b,c为整型变量)
long x,y; (x,y为长整型变量)
unsigned p,q; (p,q为无符号整型变量)

在书写变量说明时,应注意以下几点:
1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
2.最后一个变量名之后必须以“;”号结尾。
3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。
[Practice] //1int a,b;
short int c;
short d=100;
a=d-20;
b=a+d;
c=a+b+d;
d=d-a+c-b;'Vtable
a,2,0
b,2,0
c,2,0
d,2,100
of Vtable
'Vupdate
1,0;2,0
3,0
4,100
1,80
2,180
3,360
4,200
of Vupdate
of Practice
[Practice] //2int a=5;
int b=9;
long int c;
long d;
c=a+b-7;
d=a*b*c;
c=d*d*d;
a=c-d;'Vtable
a,2,5
b,2,9
c,4,0
d,4,0
of Vtable
'Vupdate
1,5
2,9
3,0
4,0
3,7
4,315
3,31255875
1,-5112
of Vupdate
of Practice
[Practice] //3int a=6,b=19;
unsigned int c;
int d;
c=a-b+7;
d=b*c;
a=b+c+d;
b=-a;'Vtable
a,2,6
b,2,19
c,2,0
d,2,0
of Vtable
'Vupdate
1,6;2,19
3,0
4,0
3,65530
4,-114
1,-101
2,101
of Vupdate
of Practice
void main(){
long x,y;
int a,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
}
将main说明为返回void,即不返回任何类型的值
x,y被定义为long型
a,b,c,d被定义为int型
5->x
6->y
7->a
8->b
x+a->c
y+b->d
显示程序运行结果 of long x,y;
int a,b,c,d;
c=x+a;
d=y+b;
从程序中可以看到:x, y是长整型变量,a, b是基本整型变量。它们之间允许进行运算,运算结果为长整型。但c,d被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后介绍。

实型量

实型常量

实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式: 十进制数形式指数形式
1.十进制数形式
由数码0~ 9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。
2.指数形式
由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数)其值为 a*10,n 如: 2.1E5 (等于2.1*10,5), 3.7E-2 (等于3.7*10,)-2*) 0.5E7 (等于0.5*10,7), -2.8E-2 (等于-2.8*10,)-2*)以下不是合法的实数 345 (无小数点) E7 (阶码标志E之前无数字) -5 (无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码)
标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。例2.2说明了这种情况:
void main()
{
printf("%f\n%f\n",356.,356f);
}
void 指明main不返回任何值 利用printf显示结果 结束

实型变量

实型变量分为两类:单精度型和双精度型,
其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
实型变量说明的格式和书写规则与整型相同。
例如: float x,y; (x,y为单精度实型量)
double a,b,c; (a,b,c为双精度实型量)
实型常数不分单、双精度,都按双精度double型处理。
void main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}
此程序说明float、double的不同
a ■■■■
b ■■■■■■■■
a<---33333.33333
b<---33333.33333333333;;
显示程序结果
此程序说明float、double的不同
float a;
double b;
a=33333.33333;
b=33333.33333333333333; 从本例可以看出,由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b 是双精度型,有效位为十六位。但Turbo C 规定小数后最多保留六位,其余部分四舍五入。
[Practice] //floatint a=32;
float b;
double d;
b=12345678;
d=b*100;
d=d+a;
d=d+58.123456;'Vtable
a,2,32
b,4,0.0
d,8,0.0
of Vtable
'Vupdate
1,32
2,0
3,0
2,12345678.00000
3,1234567800
3,1234567832
3,1234567890.123456
of Vupdate
of Practice
[Practice] //1int a=543;
float b;
b=123.123962+a;
b=b-100;
a=b;'Vtable
a,2,543
b,4,0.0
of Vtable
'Vupdate
1,543
2,0.0
2,123.123962
2,23.123962
1,23
of Vupdate
of Practice

字符型量

字符型量包括字符常量和字符变量。

字符常量
字符常量是用单引号括起来的一个字符。例如'a','b','=','+','?'都是合法字符常量。在C语言中,字符常量有以下特点:
1.字符常量只能用单引号括起来,不能用双引号或其它括号。
2.字符常量只能是单个字符,不能是字符串。
3.字符可以是字符集中任意字符。但数字被定义为字符型之后就
不能参与数值运算。如'5'和5 是不同的。'5'是字符常量,不能参与运算。

转义字符
转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
常用的转义字符及其含义
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜线,\XOA表示换行等。转义字符的使用
void main()
{
int a,b,c;
a=5; b=6; c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}
此程序练习转义字符的使用
a、b、c为整数 5->a,6->b,7->c
调用printf显示程序运行结果
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
程序在第一列输出a值5之后就是“\n”,故回车换行;接着又是“\t”,于是跳到下一制表位置(设制表位置间隔为8),再输出b值6;空二格再输出c 值7后又是"\n",因此再回车换行;再空二格之后又输出a值5;再空三格又输出b的值6;再次后"\t"跳到下一制表位置(与上一行的6 对齐),但下一转义字符“\b”又使退回一格,故紧挨着6再输出c值7。

字符变量
字符变量的取值是字符常量,即单个字符。字符变量的类型说明符是char。字符变量类型说明的格式和书写规则都与整型变量相同。
例如:
char a,b; 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。如x的
十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予'x'和'y'值: a='x';b='y';实际上是在a,b两个单元内存放120和121的二进制代码: a 0 1 1 1 1 0 0 0
b 0 1 1 1 1 0 0 1
所以也可以把它们看成是整型量。 C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时, 允许把字符变量按整型量输出,也允许把整型量按字符量输出。 整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时, 只有低八位字节参与处理。
main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a ■ b ■
a <-- 120
b <--- 121
显示程序结果

本程序中说明a,b为字符型,但在赋值语句中赋以整型值。从结果看,a,b值的输出形式取决于printf函数格式串中的格式符,当格式符为"c"时,对应输出的变量值为字符,当格式符为"d"时,对应输出的变量值为整数。
void main()
{
char a,b;
a='x';
b='y';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a,b被说明为字符变量并赋予字符值
把小写字母换成大写字母
以整型和字符型输出
本例中,a,b被说明为字符变量并赋予字符值,C语言允许字符变量参与数值运算,即用字符的ASCII 码参与运算。由于大小写字母的ASCII 码相差32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。
[Practice] //charint a=49;
char b;
char d;
b=a+10;
d=a+b;'Vtable
a,2,49
b,1,随机
d,1,随机
of Vtable
'Vupdate
1,49
2,随机
3,随机
2,';'
3,'l'
of Vupdate
of Practice
[Practice] //char c1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;'Vtable
c1,1,随机
c2,1,随机
of Vtable
'Vupdate
1,随机;2,随机
1,'a';2,'b'
1,'A';2,'B'
of Vupdate
of Practice

字符串常量
字符串常量是由一对双引号括起的字符序列。例如: "CHINA" ,"C program:" , "$12.5" 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别:
1.字符常量由单引号括起来,字符串常量由双引号括起来。
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量。
这是与BASIC 语言不同的。但是可以用一个字符数组来存放一个字符串常量。在数组一章内予以介绍。
4.字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0"(ASCII码为0)。这是字符串结束的标志。例如,字符串 "C program"在内存中所占的字节为:C program\0。字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。
'a'在内存中占一个字节,可表示为:a
"a"在内存中占二个字节,可表示为:a\0符号常量

符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都?quot;#"开头),称为宏定义命令(在第九章预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
#define PI 3.14159
void main()
{
float s,r;
r=5;
s=PI*r*r;
printf("s=%f\n",s);
}
由宏定义命令定义PI 为3.14159 s,r定义为实数 5->r PI*r*r->s
显示程序结果 float s,r; r=5; s=PI*r*r; 本程序在主函数之前由宏定义命令定义PI 为3.14159,在程序中即以该值代替PI 。s=PI*r*r等效于s=3.14159*r*r。应该注意的是,符号常量不是变量,它所代表的值在整个作用域内不能再改变。也就是说,在程序中,不能再用赋值语句对它重新赋值。

⑶ 在C语言中字符型变量有哪些内容

字符型变量中所存放的字符是计算机字符集中的字符。对于PC机上运行的C系统,字符型数据用8位单字节的ASCII码表示。
程序用类型说明符 char来声明字符型变量:char ch;
这条声明语句声明了一个字符型变量,标识符为ch。当以这种形式声明变量之后,程序可以在表达式中引用这个变量。
字符数据类型事实上是8位的整型数据类型,可以用于数值表达式中,与其他的整型数据同样使用。在这种情况下,字符型变量可以是有符号的,也可以是无符号的。对于无符号的字符型变量可以声明为:
unsigned char ch;
除非声明为无符号型,否则在算术运算和比较运算中,字符型变量一般作为8位有符号整型变量处理。
还有其他的如指针型变量,void 型变量。

⑷ C语言中用来声明变量的词有哪些

没有leap这个关键字,是某个变量名而已。

引用声明不会申请内存,定义会申请内存。

声明可以多次,定义只能一次。

变量通常声明就是定义。

比如int a;这是定义一个变量,值为随机值。

int a=0;这也是定义一个变量,值为0。

另外在定义的时候还可以加static来定义静态变量,比如static int a=0;

用static定义局部静态变量可以不被自动释放,且只定义并初始化一次。

用static定义全局静态变量只在定义它的源文件有效,其它源文件无法访问

至于你说的单纯声明变量(引用性声明),是指extern关键字,比如extern int a;来声明这个变量是外部文件的。

⑸ c语言全局变量可声明什么

如果static和extern都没有,表示定义一个全局变量,其作用域限制在从定义开始到当前文件结尾。
static的作用是将全局变量的作用域限制在从定义开始到当前文件结尾,且其他文件不可以用extern来让这个变量可见。
extern的作用是声明一个已经在别处定义了的全局变量,它不是重新定义新的全局变量,而是起到扩展全局变量作用域的作用。
a.c:
int i; //定义i变量,且可用extern去扩展它的范围
static int j; //定义j变量,用static限定j只能在本文件内使用
b.c
extern int i; //正确,将i的作用域延伸到b.c中
extern int j; //错误,因为j在定义时被static限定

⑹ c语言什么是变量变量的定义

c语言中常常用到变量,c语言中什么是变量呢?那么下面是我整理的c语言变量的定义,欢迎阅读。

c语言什么是变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。

变量介绍

由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。

变量声明后没有赋值的话 编译器会自动提示并赋予默认值

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在VB Script中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant。

声明变量

声明变量的一种方式是使用Dim语句、Public语句和Private语句在Script中显式声明变量。例如:

Dim Degrees Fahrenheit

声明多个变量时,使用逗号分隔变量。例如:

Dim Top, Bottom, Left, Right

另一种方式是通过直接在Script中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行Script时出现意外的结果。因此,最好使用Option Explicit语句显式声明所有变量,并将其作为Script的第一条语句。

命名规则

首先,我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。在VB6中,变量的命名必须遵循以下规则:

(1)变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线“_”组成;最后一个字符可以是类型说明符;

(2)变量名的长度不得超过255个字符;

(3)变量名在有效的范围内必须是唯一的。有效的范围就是引用变量可以被程序识别、使用的作用范围——例如一个过程、一个窗体等等。有关引用变量作用范围的内容,将在以后介绍。

(4)变量名不能是VB中的保留字(关键字),也不能是末尾带类型说明符的保留字,但可以把保留字嵌入变量名,关键字是指VB6语言中的属性、事件、方法、过程、函数等系统内部的标识符。如已经定义的词(if、endif、while、loop等)、函数名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的。例如:strName1,intMax_Length,intLesson,strNo3等是合法的变量名,而A&B,all right,3M,_Number等是非法的变量名。

注意:

(1)变量名在VB中是不区分大小写的(如ABC、aBc、abc等都是一样的)。C语言中区分大小写。不同的语言有不同的规则。

(2)定义和使用变量时,通常要把变量名定义为容易使用阅读和能够描述所含数据用处的名称,而不要使用一些难懂的缩写如A或B2等。例如:假定正在为水果铺编一个销售苹果的软件。我们需要两个变量来存储苹果的价格和销量。此时,可以定义两个名为Apple_Price和Apple_Sold的变量。每次运行程序时,用户就这两个变量提供具体值,这样看起来就非常直观。具体方法是:通过用一个或多个单词组成有意义的变量名来使变量意义明确。例如,变量名SalesTaxRate就比Tax或Rate的意义明确得多。

(3)根据需要混合使用大小写字母和数字。一个合理协议是,变量中每个单词的第一个字母大写,例如:DateOfBirth。

(4)另一个合理协议是,每个变量名以两个或三个字符缩写开始,这些字符缩写对应于变量要存储数据的数据类型。例如,使用strName来说明Name变量保存字符串型数据。这种命名方法叫匈牙利命名法

格式 变量类型 + 变量名字

比如刚才说的strname "str" 是"string"的缩写 "Name" 则是变量名字

注意 变量类型都是小写 而且变量名字是开头大写

C# 命名方法

1

stringstrName

VB 命名方法

1

DimstrNameasString

虽然无须过多地关注字符缩写的细节,但以后还是需要看一下这方面的约定。在Visual Basic联机帮助和许多Visual Basic高级编程的书籍中都可以找到这一约定的细节。

存活期

变量存在的时间称为存活期。Script级变量的存活期从被声明的一刻起,直到Script运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。

作用域

变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被Script中所有过程所识别,称为Script级变量,具有Script级作用域。

生存期

是指变量的分配与回收的全过程,

类型

属性变量和用户自己建立的变量。

当我们在窗体中设计用户界面时,vb6会自动为产生的对象(包括窗体本身)创建一组变量,即属性变量,并为每个变量设置其缺省值。这类变量可供我们直接使用,比如引用它或给它赋新值。

用户也可以创建自己的变量,以便存放程序执行过程中的临时数据或结果数据等等。在程序中,这样的变量是非常需要的。下面就介绍这类变量的创建和使用方法。

声明变量

变量在使用前,必须在代码中进行声明,即创建该变量。

在使用变量之前,大多数语言通常首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。

声明变量有两种方式分别是隐式声明、显式声明。

隐式声明:

变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。

显式声明:

用声明语句创建变量。

强制显式声明变量:

为了避免写错变量名引起的麻烦,用户可以规定,只要遇到一个未经明确声明就当成变量的名字,VB都发出错误警告。方法是----强制显式声明变量。要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加入这条语句:

Option Explicit

这条语句是用来规定在本模块中所有变量必须先声明再使用,即不能通过隐式声明来创建变量。在添加Option Explicit语句后,VB将自动检查程序中是否有未定义的变量,发现后将显示错误信息。

如果要自动插入Option Explicit语句,用户只要在“工具”菜单中选取“选项”命令,然后单击“选项”对话框中的“编辑器”选项卡,再选中“要求变量声明”选项

这样VB就会在任何新模块中自动插入Option Explicit语句,但只会在新建立的模块中自动插入。所以对于已经建立的模块,只能用手工方法向现有模块添加Option Explicit语句(只有再重新启动VB,这项功能才有效)。

理变量范围

变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。

存储类型

我们在程序中会经常定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。

如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。所谓使用方式,具体说就是在什么时间、程序的什么地方可以使用变量,即变量的生命周期和作用域。

先了解一些基本常识。一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。

所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。

而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。

所有用malloc分配的内存(又称为动态内存)都在堆(heap)中,其特点是:一般通过指针来访问动态分配的内存。即可以通过free来手动释放动态内存,也可以在程序结束时由系统自动释放。

以上讨论的是变量的生命周期,下面来看作用域。作用域指的是变量的可见范围,即在变量的生命周期内,程序的哪些部分可以使用该变量。

全局变量的作用域从定义点开始一直到源文件的结束。如果要在定义点之前使用全局变量的话就需要使用关键字extern对作用域进行扩展。全局变量缺省是可以被其他文件引用的。如果希望仅限于本文件使用的话,需要在定义时使用关键字static。

对于局部变量来说,无论是静态局部变量还是自动变量,作用域都仅限于定义该变量的函数或模块。

动态内存只要没有被释放就可以在程序的任何地方使用,前提是要知道动态内存的地址。

注:static加在全局变量前影响的是作用域,加在局部变量前影响的是生命周期。

变量类型

C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的.

如果按存储占用空间来分,可以是整型变量,字符型变量,浮点型变量等.当然还有数组,结构体变量等.

C语言还有一个重要变量:指针变量.它存放的值是一个内存地址.

操作系统变量

操作系统变量

C语言中变量名是有大小写之分的,如SUN与sun就是两个不同的变量名。

另一点,声明变量时,可以不用声明就直接赋值来决定变量类型的语言如(javascript,flash cs3.0以前,等),这类语言变量的声明通常被称为弱类型,而如(c++等)必须先声明,后使用,而且声明时必须确定变量类型,这种就是严格的数据类型.

变量有两种类型:属性变量和用户自己建立的变量。

JavaScript

变量

正如代数一样,JavaScript 变量用于保存值或表达式。

可以给变量起一个简短名称,比如 x,或者更有描述性的名称,比如 length。

JavaScript 变量也可以保存文本值,比如 carname="Volvo"。

变量名称的规则

变量对大小写敏感(y 和 Y 是两个不同的变量)

变量必须以字母或下划线开始

注释:由于 JavaScript 对大小写敏感,变量名也对大小写敏感。

实例

脚本执行的过程中,可以改变变量的值。可以通过其名称来引用一个变量,以此显示或改变它的值。

本例为您展示原理。

声明(创建) JavaScript 变量

在 JavaScript 中创建变量经常被称为“声明”变量。

您可以通过 var 语句来声明 JavaScript 变量:

var x; var carname;

var x; var carname;

在以上声明之后,变量并没有值,不过您可以在声明它们时向变量赋值:

var x = 5; var carname = "Volvo";

var x = 5; var carname = "Volvo";

注释:在为变量赋文本值时,请为该值加引号。

向 JavaScript 变量赋值

通过赋值语句向 JavaScript 变量赋值:

x = 5; carname = "Volvo";

x = 5; carname = "Volvo";

变量名在 = 符号的左边,而需要向变量赋的值在 = 的右侧。

在以上语句执行后,变量 x 中保存的值是 5,而 carname 的值是 Volvo。

向未声明的 JavaScript变量赋值

如果您所赋值的变量还未进行过声明,该变量会自动声明。

这些语句:

x = 5; carname = "Volvo";

x = 5; carname = "Volvo";

与这些语句的效果相同:

var x = 5; var carname = "Volvo";

var x = 5; var carname = "Volvo";

重新声明 JavaScript变量

如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。

var x = 5; var x;

var x = 5; var x;

在以上语句执行后,变量 x 的值仍然是 5。在重新声明该变量时,x 的值不会被重置或清除。

JavaScript算术

正如代数一样,您可以使用 JavaScript 变量来做算术:

y = x - 5; z = y + 5;

y = x - 5; z = y + 5

php中的变量类型

PHP 中的变量:变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

在 PHP 中设置变量的正确方法是:

$var_name = value;PHP 的入门者会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。

我们创建一个存有字符串的变量,和一个存有数值的变量:

不必向 PHP 声明该变量的数据类型。

根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。

在强类型的编程语言中,您必须在使用前声明变量的类型和名称。

在 PHP 中,变量会在使用时被自动声明。

php 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。

变量名与 php 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*'。

注: 在此所说的字母是 a-z,A-Z,以及 ASCII 字符从 127 到 255(0x7f-0xff)。

php 3 中,变量总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。有关这种类型的赋值操作,请参阅表达式一章。

php 4 提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作;因而,这种赋值操作更加快速。不过只有在密集的循环中或者对很大的数组或对象赋值时才有可能注意到速度的提升。

使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。例如,下列代码片断将输出“My name is Bob”两次:

有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。

变量的命名规则:

变量名必须以字母或下划线 "_" 开头。

变量名只能包含字母数字字符以及下划线。

⑺ C语言中怎样申明变量

任何一种编程语言都离不开变量,特别是数据处理型程序,变量的使用非常频繁,没有变量参与程序甚至无法编制,即使编制运行后的意义也不大。变量之所以重要,是因为变量是编程语言中数据的符号标识和载体。

C语言是一种应用广泛的善于实现控制的语言,变量在C语言中的应用更是灵活多变。那么变量究竟是什么呢?变量是内存或寄存器中用一个标识符命名的存储单元,可以用来存储一个特定类型的数据,并且数据的值在程序运行过程中可以进行修改。可见,变量首先是一个标识符或者名称,就像一个客房的编号一样,有了这个编号我们在交流中就可方便言表,否则,我们只可意会,那多不方便。为了方便,我们在给变量命名时,最好能符合大多数人的习惯,基本可以望名知义,便于交流和维护;其次,变量是唯一确定的对应内存若干存储单元或者某个寄存器。这些是编译器来保证的,用户一般不用费心。

程序员一旦定义了变量,那么,变量就至少可为我们提供两个信息:一是变量的地址,即就是,操作系统为变量在内存中分配的若干内存的首地址;二是变量的值,也就是,变量在内存中所分配的那些内存单元中所存放的数据。

由于程序的多样需要,我们对变量也有各种各样的要求,比如:变量的生命期,变量的初始状态,变量的有效区域,变量的开辟地和变量的开辟区域的大小等等;为了满足这些要求,C语言的发明者就设置了以下变量:

1、 不同数据类型的变量;如:char cHar, int iTimes, flaot faverage;

2、 全局变量或者叫全程变量;

3、 局部变量;

4、 静态变量: 静态全局变量和静态局部变量;关键词:static

5、 寄存器变量;关键词:register;

6、 外部变量: 关键词:extern;

C语言中,变量在内存中开辟地的大小由数据类型决定的,由于PC机中规定一个地址单元存一个字节,不同的数据类型的变量,为其分配的地址单元数是不一样的。C语言中除几种基本的数据类型外用户还可以自己定义所需要的数据类型:

1、 bool型 sizeof(bool): 1

2、 char型: sizeof(char): 1

3、 short型: sizeof(short): 2

4、 int型: sizeof(int): 4

5、 long型: sizeof(long): 4

6、 float型: sizeof(float): 4

7、 double型: sizeof(double): 8

8、 自定义型:如:

typedef struct tagMyData

{

char cHar;

int iTimes;

float faverage;

}MyDatap;

sizeof(MyDatap): 12

char szBuf[]="HELLO C&C++!";

sizeof(szBuf): 13

局部变量和全局变量是相对而言的;如下:局部变量 int itmp;

int Get_Max( const int& x, const int& y, const int& z )

{

int itmp;

if(x > y) itmp = x;

else itmp = y;

if( itmp > z ) return itmp;

else return z;

}

在函数内部说明的变量为局部变量,只有在函数执行时,局部变量才存在,当函数执行完退出后,局部变量随之消失。也就是,当函数执行完退出后,原先在函数内定义的变量现在不能用,这通常由编译器保证,它会阻止编译通过。也就是说,原来为那个局部变量分配的内存,现在已经不属于它,它再无权访问了。如要再使用这些内存单元就必须从新定义变量来申请,只有分配给的变量才可访问它。否则,就会出错,如数组越界访问。

与局部变量不同,全局变量在整个程序都是可见的,可在整个程序运行过程中,对于任何一个程序都是可用的。全局变量的说明的位置在所有函数之外,但可被任何一个函数使用,读取或者写入。如下:全局变量 int iCount, bool bForward;

int iCount; //全局变量;

bool bForward; //全局变量;

void add( void );

void dec( void );

void man(void )

{

while( iCount < 1000 && iCount > -1000)

{

add( );

dec( );

printf("COUNT:%d;\n", iCount)

}

}

void add( void )

{

if( bForward ) iCount++;

}

void dec( void )

{

if(!bForward ) iCount--;

}

可见,全局变量非常方便不同函数间数据共享,同样,任何函数在在使用数据时,都不敢保证数据是否已被修改。如果程序员无法保证这个,就尽量避免使用全局变量。

静态变量是分配在存储器中C程序所占据的数据段内, C程序运行的整个过程中一直保留,不会被别的变量占用。静态变量可以定义成全局变量或局部变量,当定义为全局变量时,在它定义的程序的整个运行期间均存在并且保持原来的存储单元位置不会改变。那么既然有了全局变量为什么还要定义全局静态变量呢?看下边的示例:

⑻ c语言变量基本类型有哪些

c语言的变量有三种类型:char,int,float,double

其中char为字符类型的变量是八位的,最前一位作为符号位,后面七位作为数据位.它的存储范围在-128到127之间.

int整数类型的变量是16位的,最前一位为符号位,后面的15位作为数据位.它的存储范围在-215到215-1.也就是-32768到32767.它不包扩小数点以后的数,在一般编译器中给int类型赋予带有小数的数.编译器会自动去掉小数点后面的数保留整数部分.

float为浮点数类型.首先要说明的是浮点数有两部分组成,第一部分是指数,也就是多少次幂嘛.第二部分是由尾数组成也就是一个数科学表示发之后除去幂那部分剩下的(呵呵!!!)如1.33333.那么c中的浮点数就有三部分.32位的浮点数第一位就是第一部分它决定数的符号.第二部分是八位的指数.第三部分是23位的尾数.所以浮点数具有6到7位的存储精确度.范围为3.4e-38到3.4e+38的数值.注:3.1415926e+7表示3.1415926.0.在给浮点数赋值的时候可以采用如下方法.123.45和1.2345e2是等价的.

double为双精度型变量.c编译器通常用64位来存储双精度性变量.它的精确度能够达到14到15位.64位中第一位是符号位.后面的11位是指数位.最后的52位是尾数.它的范围是-1.7e-308到1.7e+308.

类型标识符:unsigned,short,register,long和signed.

其中unsigned提示编译器不要保留符号位,这样可以扩大数据类型正数的范围.比如unsigned int的范围就变位0到65535了.

short类型用在有的编译器不能给太大的存储范围,需要给一个比较低的溢出界限.比如有的编译器就用的是32位来存储int类型.用short来标识它可以保证int是用16位来标识的.

register表示一个变量可能会用得很频繁.需要很快得存取速度所以指定的把它存到寄存器当中.

long表示不希望用16位来存储整形变量时可以用long指定它用32位来存储可以得到更大得表示范围.

当然还有long unsigned int 这样得类型.

用户自定义数据类型

用户可以使用typedef来自己定义自己需要得数据类型.如下例:

typedef unsigned long int myint;

myint num1;

这样num1就是unsigned long int类型的了.

⑼ c语言怎样声明和定义全局变量

定义在函数体外部的变量叫全局变量,

要定义全局变量你只要把变量定义在

所有函数外部即可。

要注意的是,全局变量只对它定义位

置以下的函数可见。

#include<stdio.h>

voidf1();
voidf2();
inty=100;
intmain()
{

printf("%d ",y);
//printf("%d ",x);这不可以读x,x对main()不可见
f1();
f2();
return0;

}

intx;
voidf1()
{
x=200;
}

voidf2()
{
printf("%d ",x);
printf("%d ",y);
}

⑽ c语言全局变量可声明什么

如果静态和外部都不是,则表示定义了一个全局变量,其作用域仅限于定义的当前文件的末尾。