首页 > 其他分享 >C语言【怎么定义变量?】

C语言【怎么定义变量?】

时间:2023-07-29 14:47:34浏览次数:31  
标签:初始化 定义 int C语言 result extern 变量

变量定义的目的是向编译器说明在哪里创建变量的存储,并指明如何创建变量的存储方式。变量定义会明确指定一个数据类型,并包含一个或多个变量的列表。例如:

type variable_list;

在这里,"type"必须是一个合法的C数据类型,可以是"char"、"w_char"、"int"、"float"、"double",或者是用户自定义的对象。"variable_list"可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。以下是几个有效的声明示例:

 

int i, j, k;
char c, ch;
float f, salary;
double d;
```

声明"int i, j, k;"表示创建了类型为整数(int)的三个变量,它们的名称分别是"i"、"j"和"k"。

在变量声明的同时,也可以对变量进行初始化,即指定一个初始值。初始化器由等号后面跟着一个常量表达式组成,例如:

 

int x = 5;
float pi = 3.14;
char grade = 'A';
```

上述示例中,"x"被初始化为整数5,"pi"被初始化为浮点数3.14,"grade"被初始化为字符'A'。

下面列举几个实例:

extern int d = 3, f = 5; // d 和 f 的声明与初始化

int d = 3, f = 5; // 定义并初始化 d 和 f

byte z = 22; // 定义并初始化 z

char x = 'x'; // 变量 x 的值为 'x'

 

 

不带初始化的定义:具有静态存储持续时间的变量会被隐式初始化为NULL(所有字节的值都是0),而其他所有变量的初始值是未定义的。

在C语言中,变量声明是向编译器保证某个变量以指定的类型和名称存在,这样编译器在不需要知道变量的完整细节的情况下也能继续进一步的编译。变量声明仅在编译时具有意义,在程序连接时,编译器需要实际的变量声明。

变量的声明有两种情况:

1、一种是需要分配存储空间的。例如:int a 在声明的时候就已经分配了存储空间。

2、另一种是不需要分配存储空间的,通过使用extern关键字声明变量名而不定义它。例如:extern int a 其中变量a可以在其他文件中定义。

除非有extern关键字,否则都是变量的定义。extern int i; //声明,不是定义 int i; //声明,也是定义

下面是一个示例,其中变量在头部已经被声明,但是定义与初始化在主函数内部:

#include <stdio.h>
// 函数外定义变量 x 和 y
int x;
int y;
int addtwonum()
{
// 函数内声明变量 x 和 y 为外部变量
extern int x;
extern int y;
// 给外部变量(全局变量)x 和 y 赋值   //C/C++学习交流群:558970390
x = 1;
y = 2;
return x+y;
}
int main()
{
int result;
// 调用函数 addtwonum
result = addtwonum();
printf("result 为: %d",result);
return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

result 为: 33

要是你要在一个源文件中引用另外一个源文件中定义的变量,我们只要在引用的文件中将变量加上 extern 关键字的声明就行了。

addtwonum.c 代码:

#include <stdio.h>
/*外部变量声明*/
extern int x ;
extern int y ;
int addtwonum()
{
return x+y;
}

test.c 代码:

#include <stdio.h>
/*定义两个全局变量*/
int x=1;
int y=2;
int addtwonum();
int main(void)
{
int result;
result = addtwonum();
printf("result 为: %d\n",result) 领取源码资料 添加群免费领取
return 0;
}

如果上面的代码被编译和执行的时候,它就会发生下列结果:

$ gcc addtwonum.c test.c -o main
$ ./main
result 为: 3

在 C 语言中,存在两种类型的表达式:

1. 左值(lvalue):左值是指向内存位置的表达式。

左值可以出现在赋值语句的左边或右边。

2. 右值(rvalue):右值是指存储在内存中某些地址的数值。

右值不能被赋值,因此不能出现在赋值语句的左边,只能出现在右边。

在 C 语言中,变量是左值,因此可以出现在赋值语句的左边。而数值型的字面值是右值,因此不能被赋值,也不能出现在赋值语句的左边。下面是一个例子:

int x = 10; // 正确:变量 x 是左值,可以出现在赋值号的左边

int y = 20; // 正确:变量 y 是左值,可以出现在赋值号的左边

10 = x; // 错误:10 是右值,不能出现在赋值号的左边

欢迎初学和进阶中的小伙伴。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以私信或者进入学习群跟我一起学习 助你早日成为一名优秀的程序员,想要学习更多知识可以关注我哦!

标签:初始化,定义,int,C语言,result,extern,变量
From: https://www.cnblogs.com/2467118965z/p/17589776.html

相关文章

  • 基于C语言设计的全局光照明模型
    完整资料进入【数字空间】查看——搜索"writebug"Part1Whitted-StyleRayTracingStep0.算法流程为了渲染出一张图片,RayTrace()计算了给定像素点的色彩取值。根据光路可逆原理,可以从人眼作为出发点,沿着指向该pixel的某一点的方向发出一条ray。Step1:射线求交这条ray会碰到一个......
  • 【环境属性AmbientValueAttribute】使用ShouldSerialize 和 Reset 方法定义默认值----
    今天和大家讲解下关于winform控件的 环境属性AmbientValueAttribute 开发,net自带标准控件库里面的Control基类里面有些属性会根据父容器的属性变化而变化的,其中最常用环境属性包括BackColor、ForeColor、Font、Cursor。在这里不得不吐槽微软把所有技术文档全放在一个网站,用他的......
  • c语言学习笔记5
    内存空间在C语言中,内存空间可以被划分为以下几个部分:1.栈(Stack):这部分内存由编译器自动分配和释放,用于存放函数的参数值,局部变量等。其操作方式类似于数据结构中的堆栈,先进后出。2.堆(Heap):堆是用于动态内存分配的。与栈不同,堆的分配和释放必须由程序员自己操作。在C语言中,使用m......
  • 多线程共享全局变量的问题
    线程之间共享全局变量多个线程都是在同一个进程中,多个线程使用的资源都是同一个进程中的资源,因此多线程间是共享全局变量问题示例1importthreading234#全局变量5g_num=0678#对g_num进行加操作9defsum_num1():10foriinrange(......
  • asp.net core 2.0 web api基于JWT自定义策略授权
    原文通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源。关于JWT的技术,可参考网络上文章,这里不作详细说明,这篇博文,主要说明在asp.netcore2.0中,基于jwt的webapi的权限设置,即在asp.netcore中怎么用JWT,再次......
  • Python-3-Python变量与运算符
    第三章:变量与运算符3-1变量的介绍1.变量只能包含字母、数字、下划线。变量名可以以字母或下划线开头,但绝不是数字开头。2.不能将python关键字作为变量名,常见python关键字有:FalseclassfinallyisreturnTruecontinueforlambdat......
  • 浙大版《C语言程序设计实验与习题指导(第4版)》题目集(持续更新)
    C语言练习实验1-1HelloWorld!要求:输出一个短句“HelloWorld!”。答案:#include<stdio.h>intmain(){printf("Helloworld!\n");return0;}实验1-2简单求阶乘问题要求:在一行中给出一个不超过12的正整数N,在一行中输出阶乘的值。答案:#in......
  • ChatGPT 问答00004 html 自定义右键
    要在HTML页面中自定义右键菜单,可以使用JavaScript实现。下面是一个简单的例子:首先,在<head>标签中插入以下代码来禁用默认的浏览器右键菜单:<script>//禁用右键菜单document.addEventListener('contextmenu',function(event){event.preventDefault();});......
  • 利用ChatGPT取变量名
    不知道“增益道具”在英文里该怎么说,百度翻译是GainProp,感觉怪怪的。于是用ChatGPT问了一下。我:inagame,somethingthatcanbufftheplayer,whatisitGPT:Inagame,a"buff"typicallyreferstoatemporaryenhancementorimprovementthatisappliedtoapl......
  • 第三章 指针才是C语言的精髓(嵌入式Linux与物联网软件开发 C语言内核深度解析)
    这仅仅是读《嵌入式Linux与物联网软件开发:C语言内核深度解析》pdf的知识记录 地址:指的都是某个字节的地址。比如inta的空间大小有4个字节,每个字节都有一个地址(也就是有4个地址),但是只有首字节地址才能作为整个a空间的地址。也就是说,整个内存以1个字节为基本单位划分无数个地址,......