一、不指定:
全局及静态变量默认0,局部变量随机值。
二、定义同时赋初值:
比如int a=1;char str[]="abc";
三、定义时未赋初值,在使用前赋值。
比如int a;a=1;printf("%d",a);
ps:注意函数内静态变量定义给初值和之后赋值是有区别的,静态变量的定义赋初值语句,只在第一次调用函数时执行,如定义之后有重新赋值的语句,再次调用函数,静态变量会保留上次赋值的结果。
变量的声明有两种情况:
1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。
前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a 它既是声明,同时又是定义。然而对于 extern a 来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。很明显我们在这里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:
int main() {
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变量
外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。所谓的“声明”,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。extern 只作声明,不作任何定义。
(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。)
用static来声明一个变量的作用有二:
(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。
(2)外部变量用static来声明,则该变量的作用只限于本文件模块。
常量记忆数据只能存储一个固定的数据,永远不变,所以这当然不能算得上是记忆数据
变量存储的数据可以改变,你可以让它记忆5,下一步它可以变为10
如果你还无法理解
那么请不用尝试变量编程实现以下:
输入一个100之内的整数,输出它。
最后你会发现不使用变量无法实现
因为你每次需要输入的数需要存储下来,而常量只能在程序开始才能"赋值"(指定值),自然就不能
存储这个数据了,而变量就是用来存储数据的。
我的理解:常量是橡皮檫,虽然有各种形状,但在你买时就已经决定形状不可更改了,就好像你在
一个程序中可以设置常量,常量的值可以设为1,2,10或者是实型的15,26也可以是'a'但一经设
置便不可更改。而变量则像是橡皮泥,你可以轻易地改变他的形状,但你不能轻易地改变它的类
型,就如程序中你可以任意的改成它的值,从100到-100,从2到11111等
请添加详细解释
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:
C语言基础知识常量和变量分类:C/C++
1常 量: 程序执行过程中,值不变的量。 3 ,\'a\'
变 量:值可以改变的量。
一个变量有一个名字,在内存中有一定的存储单元,存放变量的值。
2常量类型:
a整 型:12,0,-3
b实 型:46,-12
c字 符 型: \'a\',\'d\'
d符号常量: #define PRICE 30 (PRICE不能再被赋值且要大写)
3变 量: 先定义,后使用。一个变量只能被指定为一确定类型。
4标识符:标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符数列。
a由字母、数字、下划线三种字符组成,第一个字符必须为字母或下划线。
b大写字母、小写字母被认为是两个不同的字符。
c长度一般小于8个。
数据类型
一整 型:
1整型常量
a十 进 制:12,-3,0
b八 进 制:以0开头。
c十六进制:以0x开头。
2整型变量
a int -32768——32767
b short int -32768——32767
c long int
d unsigned int 0——65535
e unsigned short 0——65535
f unsigned long
int、short int、long int 第一位为符号位 0000001 (0为正,1为负)
unsigned 第一位不是符号位 0000001
所以int型和unsigned型的000001不是同一个值。
二实 型:
1实型常量:
a十进制数:数字和小数点组成。012,12,120,00
b指 数:e之前必须有数字,e后面必须为整数。12e3
2实型变量:
a单精度:float 7位有效数字 1111111可,11111111不可。
b双精度:double 15—16位有效数字 。
三字符型:
1字符常量:
a \'a\' , \'x\' , \'\' ,\'$\' 。
b 转义字符:‘\\n\'换。 \'\\t\'从第九列开始。\'\\r\'回车。 \'\\b\'退一格。
2字符变量:
char char=\'a\' 一个字符变量在内存占一个字节。
。将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的ASC码
放到存储单元中,所以字符型数据和整型数据之间可以通用。一个字符型数据既可以以字符形式输出,
又可以以整数形式输出。
四字符串常量:
"how are you", "a","&12"
。不能把一个字符串赋给一个字符变量。 char c=\'a\'对,char c="how" 错。
。\'a\' :在内存中存a。
“a”:在内存中存a\\0。
‘\\0’是C语言中判断字符串是否结束的标志。
变量赋初值
a int a=3;
float f=72;
char c=\'a\';
b int a,b,c=5;
相当于 int a,b,c;
c=5;
c int a=3;b=3;c=3; 不可写: int a=b=c=3;
各类数值型数据间的混合运算
整型、实型、字符型数据可以混合运算:10+\'a\'+15-87654321\'b\'
double<--float
long
unsigned
int <--char,shot
float型转晃double型
char型,shot型转换为 int型
int型 转换为double型 等等
算术运算符和算术表达式
1基本算术运算符
+ 加
- 减
乘
/ 除 5/3=1
% 摸(MOD) 5%3=2
2强制类型转换运算符:将一个表达式转换成所需类型
(类型名)(表达式)
(double)a 将a转换为double型
(int)(x+y) 将x+y转换为int型
(float)(5%3) 将5%3转换为float型
putchar函数:输出一个字符
#include "stdioh"
a char a;
a=\'C\';
putchar(a);
b putchar(\'\\n\');
c putchar(\'\\102\');
getchar函数:输入一个字符
#include "stdioh"
a char c;
c=getchar();
putchar(c);
b putchar(getchar());
c printf("%c",getchar());
putchar函数:输出若干个任意类型的数据
a printf("%d,%d",a,b);
b printf("a=%d b=%d",a,b);
1d 输出十进制整数
a %d:
b%md: 指定输出的宽度。数据位数小于m,左端补空格;大于m,按实际位数输出。
a=123;b=12345;
printf("%4d,%4d",a,b);
输出结果为:_123,12345
c%ld: 输出长整型数据。
long a=123456;
printf("%ld",a); 用%d,错。
printf("%9ld",a); 输出结果为:___123456
2 o 输出八进制数
3 x 输出十六进制数
4 u 输出unsigned型数据
5 c 输出一个字符
6 s 输出一个字符串
a%s printf("%s""how");
b%ms
c%-ms
d%mns
e%-mns
7 f 以小数形式输出实数
a%f
b%mnf
c%-mnf
8 e 以指数形式输出实数
a%e
b%mne
c%-mne
scanf函数:输入任意类型的多个数据
scanf("%d%d%d",&a,&b,&c); &a指a在内存中的地址。
——按a,b,c在内存的地址将a,b,c的值存入。
if语句
1 if (A) B;
如果条件A满足,执行B,否则执行下一句。
2 if (A) B
else C;
如果条件A满足,执行B,否则执行C。
3 if (A)
if (B) C
else D;
else
if (F) H
else K;
输入三个数,按小到大输出。
main()
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b&c); 4 2 1
if (a>b)
{t=a;a=b;b=t;} 2 4 1
if (a>c)
{t=a;a=c;c=t} 1 4 2
if (b>c)
{t=b;b=c;c=t;} 1 2 4
printf("%f,%f,%f",a,bc);
}
switch 语句
switch(a)
{
case A : B; break;
case C : D; break;
default : F; break;
}
如果变量a=A,执行B;执行break语句,跳出swith语句。如果没有break语句,D,F语句也会执行。
如果变量a=C,执行B;其它情况执行F。
while 语句
while(A)
{
B;
}
如果条件A满足,执行B,否则执行下一句。(先判断,后执行。)
while(i<-5)
{
s=s+1;
i++;
}
如果i=1,则不满足i<-5,执行下一句。i值不变。
do-while 语句
do
{
A;
}
while(B);
先执行A,再判断B;如果B满足,再执行A,否则执行下一句。(先执行,后判断)
do
{
s=s+1;
i++;
}
while(i<-5);
如果i=1,执行i++,i=4;不满足i<-5,执行下一句。
for 语句
for( A ; B ; C ) D;
A:为变量赋初值;
判断是否满足条件B;满足则执行D再执行C再判断B;
不满足则执行下一句。
for(i=1;i<=5;i++) s=s+1;
for(i=1,s=0;i<=5;i++) s=s+1;
for( ;i<=5;i++) s=s+1;
for( ;i<=5; ) { s=s+1; i++;}
break 语句
break 语句:终止循环。用于循环语句,switch语句。
while(A)
{
if (B) C; break;
}
执行break语句,跳出循环,执行后面的语句。
continue 语句
continue 语句:只结束本次循环,而不是终止整个循环。
while(A)
{
if (B) C; continue;
}
执行break语句,跳出循环,再判断A,继续执行循环。
以上就是关于C语言程序中定义的变量要取得一个初始值一般有哪几种方法全部的内容,包括:C语言程序中定义的变量要取得一个初始值一般有哪几种方法、c语言,变量的定义和使用、在C语言中,变量主要的作用是什么请畅谈……等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)