❶ c语言,变量的定义和使用
变量的声明有两种情况:
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来声明,则该变量的作用只限于本文件模块。
❷ C语言的变量如何使用和理解请举例说明。如何学会理解C语言的学习方法
简单的说,
你看一百遍不如自己敲一遍,
刚开始学习就是模仿,
每天敲代码,
一段时间后你就会有了一定的理解。
变量就是存储在内存某一块地址中的数值,其值是可以改变的。
变量名就是你在程序中如何使用这块地址,给他起了一个名字。
假如声明int a;
那么a就是一个整型变量,
你用&a打印a的地址,
这个地址就是变量a的地址,
变量名就是引用这个地址用的。
如果你进行赋值 a = 8;
那么a的地址就记录了8这个数值。
通过a就可以使用了。
比如打印这个数字
printf("%d\n",a);
亲,记的个好评!!!
❸ c语言变量引用
一、必须是c++程序才可以 .cpp
二、逗号必须是英文的
#include<stdio.h>
intmain()
{
inta;
int*p;
int&aa=a;//c++才支持
a=1;
p=&a;
printf("a的值:%d ",a);//
*p=5;
printf("指针修改后a的值:%d ",a);//
aa=9;
printf("引用修改后a的值:%d ",a);//
return0;
}
❹ C语言中变量是什么为什么要加以说明
常量可以不加说明直接使用.:"A",1,-23.等等
符号常量和变量在C中必须先申明后使用.
符号常量定义:
#define
符号常量名
常数串
变量定义:
基本类型
变量名
一般符号常量用大写字母
变量用小写字母
❺ c语言中什么叫引用
引用(reference)是c++对c语言的重要扩充。引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*,例如: Point pt1(10,10)。
Point &pt2=pt1;,定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。
需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词,引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。
循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。
四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。
特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
❻ C语言中引用指的是什么,举个例子
C语言里面没有引用的说法,只有C++里面有。C++里引用就是给变量定义一个别名,操作这个别名就是操作原变量。
比如,我们定义一个引用:
inta=10;//定义一个普通变量
int&ref=a;//定义一个变量a的引用
ref=20;//这里对ref进行操作其实就是对a进行操作
变量主要是在参数传递的时候非常有用,当你的函数参数是一个值参数的时候,我们一般的做法是传递一个指针进去,这样就导致我们在函数里操作的都是指针,这样其实很不方便,如果使用引用的话就可以非常方便。
比如定义一个参数是引用的函数
voidfunc(int&b)
{
b++;
}
//调用
inta=100;
func(a);//调用的时候直接传递参数进去
上面的方式可以实现和指针一样的效果,但是更加方便
❼ 请问c语言中引用怎样理解
1、引用的理解
引用是引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。
例如: Point pt1(10,10);
Point &pt2=pt1; 定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。
需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词。因此,当下面的语句执行后:
pt1.offset(2,2);
pt1和pt2都具有(12,12)的值。
引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才
初始化它。例如下面语句是非法的:
Point &pt3;
pt3=pt1;
2、引用的两个主要用途
作为函数参数以及从函数中返回左值。
(1)引用参数
a、传递可变参数
传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。所以在传统的c中,如果需要函数的参数具有返回值的能力,往往是通过指针来实现的。比如,实现两整数变量值交换的c程序如下:
void swapint(int *a,int *b)
{
int temp;
temp=*a;
a=*b;
*b=temp;
}
使用引用机制后,以上程序的c++版本为:
void swapint(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
调用该函数的c++方法为:swapint(x,y); c++自动把x,y的地址作为参数传递给swapint函数。
b、给函数传递大型对象
当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。下面的例子定义了一个有限整数集合的类:
const maxCard=100;
Class Set
{
int elems[maxCard]; // 集和中的元素,maxCard 表示集合中元素个数的最大值。
int card; // 集合中元素的个数。
public:
Set () {card=0;} //构造函数
friend Set operator * (Set ,Set ) ; //重载运算符号*,用于计算集合的交集 用对象作为传值参数
// friend Set operator * (Set & ,Set & ) 重载运算符号*,用于计算集合的交集 用对象的引用作为传值参数
...
}
先考虑集合交集的实现
Set operator *( Set Set1,Set Set2)
{
Set res;
for(int i=0;i<Set1.card;++i)
for(int j=0;j>Set2.card;++j)
if(Set1.elems[i]==Set2.elems[j])
{
res.elems[res.card++]=Set1.elems[i];
break;
}
return res;
}
由于重载运算符不能对指针单独操作,我们必须把运算数声明为 Set 类型而不是 Set * 。每次使用*做交集运算时,整个集合都被复制,这样效率很低。我们可以用引用来避免这种情况。
Set operator *( Set &Set1,Set &Set2)
{ Set res;
for(int i=0;i<Set1.card;++i)
for(int j=0;j>Set2.card;++j)
if(Set1.elems[i]==Set2.elems[j])
{
res.elems[res.card++]=Set1.elems[i];
break;
}
return res;
}
2、引用返回值
如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:
double &max(double &d1,double &d2)
{
return d1>d2?d1:d2;
}
由于max()函数返回一个对双精度数的引用,那么我们就可以用max() 来对其中较大的双精度数加1:
max(x,y)+=1.0;
(7)c语言中的变量引用和说明扩展阅读
使用c语言中引用的原因
程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。
在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。
C语言中,函数调用的一般形式为:
函数名(实际参数表)
对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。字符函数引用即对引用有关库函数或自定义函数函数。
❽ C语言中局部变量如何作“引用声明”
嘛?我觉得你概念上就完全混淆了。
引用和声明表面看起来差不多,但区别还是有的,而且还是一个至关重要的地方,那就是是否分配内存空间。
void fun(int ,int*);这就是声明,声明一个函数,只是告诉编译器有这个函数,但并不会对该函数分配内存空间
int a;这是定义,因为不光告诉编译器有一个叫做a的变量,还捎带给a分配了空间。
你说的那个,记错了吧?貌似是变量作用域的问题吧?
相同的作用域,不允许定义同名变量,作用域不同的可以。例如这样
main()
{int a;
{int a;}
}
在同一个作用域内,已经有了对某变量的定义,就不需要再次声明了
❾ 是否一定要对C语言中引用的变量进行说明
不一定,可以直接定义使用,但是不符合编程规范,养成良好的编程习惯才能编写出高质量的代码。引用的外部变量才必须使用extern声明。
❿ 请问c语言中引用怎样理解
是引用类型吗?C语言中没有引用类型,引用类型是C++的,意思是为已有变量起一个别名。如int a,&b=a;,就定义了b是变量a的别名。通俗点说,可以理解为a、b是同一个变量的不同符号而已。