精华内容
下载资源
问答
  • 主要介绍了C语言在头文件中定义const变量详解的相关资料,需要的朋友可以参考下
  •  然而在C语言中,变量定义一定要在函数体的开始处;  否则在使用到变量的地方才定义,编译的时候会报不认识此变量,如下这个屏幕字段入口函数: Fi_120015_01_CICUSENA() {  char acRegFlg[2];  ...
  • C语言定义整型变量

    2014-08-13 15:07:13
    简单的变量定义,最简单,容易理解,没有更简单的了
  • 今天在完善通讯录项目的时候发现一个小问题,就是在switch case 语句中定义变量时会报错,出现下面的问题 函数中当时我是这样写的 问题处在哪里呢?很简单,大家看下面的例子 switch(num){ case 1: int ...

    今天在完善通讯录项目的时候发现一个小问题,就是在switch case 语句中定义变量时会报错,出现下面的问题

    这里写图片描述

    函数中当时我是这样写的
    这里写图片描述

    问题处在哪里呢?很简单,大家看下面的例子

          switch(num){
          case 1:
              int a = 1;
          case 2:
              printf("hello world\n");
    
          }   

    上面这种情况是不会通过编译的,原因是存在变量未初始化的问题,有下面两种情况:

    1. num = 1:执行case 1分支,a顺利的被初始化为1,执行完case 1之后,会顺序执行case 2,此时是没有任何问题的。 因为a在整个switch块中都是可见的,而不只是自身所在的case语句内部
    2. num = 2:跳过case 1 分支,a在2分支内是可见的,但是不能被引用,因为此时的a是“未初始化的”,编译器为了避免这种情况,就会在编译的时候直接报错。

    解决方法1

        5     switch(num){
        6     case 1:
        7         {int a = 1;}
        8     case 2:
        9         printf("hello world\n");
       10     case 3:
       11         {int a = 2;}                                                                                                            
       12     }
    

    这个可以通过编译,因为此时在case ‘b ‘中a不可见(因为a在语句快中),所以不会出现上述的“不一致”现象,因此编译顺利通过。

    解决方法2

        int a;
        switch(num){
        case 1:
            a = 1;
        case 2:
            printf("hello world\n");
        }   
    

    在整个switch块外声明变量。这样在无论开始跳转到哪个语句,都是可以直接引用a的。

    展开全文
  • C语言 | auto定义变量

    千次阅读 2021-02-22 08:59:57
    例88:学习使用C语言auto定义变量的用法。 解题思路:auto自动存储类型,一般我们很少在程序中显示申明变量为auto类型。因为代码块中的变量缺省情况下就是这种类型,这种类型的变量存放于堆栈中,也就是说只有程序...

    例88:学习使用C语言auto定义变量的用法。

    解题思路:auto自动存储类型,一般我们很少在程序中显示申明变量为auto类型。因为代码块中的变量缺省情况下就是这种类型,这种类型的变量存放于堆栈中,也就是说只有程序执行这些代码块时这种自动变量才会被创建,代码块执行结束后自动变量便被释放。

    C语言源代码演示:

    #include<stdio.h>//头文件 
    int main()//主函数 
    {
      int i,num;//定义整型变量 
      num=2;//赋初值 
      for (i=0;i<3;i++)//3层循环 
      { 
        printf("整型变量num的值是:%d\n",num);
        num++;
        {
        auto int num=1;
        printf("auto类型的num值是:%d\n",num);
        num++;
        }
      }
      return 0;//函数返回值为0 
    }
    

    编译运行结果:

    整型变量num的值是:2
    auto类型的num值是:1
    整型变量num的值是:3
    auto类型的num值是:1
    整型变量num的值是:4
    auto类型的num值是:1
    
    --------------------------------
    Process exited after 1.502 seconds with return value 0
    请按任意键继续. . .
    

    以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~

    C语言开发工具

    更多案例可以go公众号:C语言入门到静通

    展开全文
  • C语言switch case语句中定义变量问题

    万次阅读 2017-08-13 12:20:00
    严正声明: 作者:psklf ...欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;...这个问题需要分开讨论,C 语言和 C++ 的标准定义是不同的。 C++int Caset(int a) { switch (a) { case 1:

    严正声明:
    作者:psklf
    出处: http://www.cnblogs.com/psklf/p/6702767.html
    欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任!

    这个问题需要分开讨论,C 语言和 C++ 的标准定义是不同的。
    C++

    int Caset(int a) {
        switch (a) {
            case 1:
                int b = 1;
                std::cout<<"a==1: "<<b<<std::endl;
                break;
            case 2:
                b = 2;
                std::cout<<"a==2: "<<b<<std::endl;
                break;
        }
    }

    编译报错信息为

    simple.cc:35:9: error: cannot jump from switch statement to this case label
        case 2:
        ^
    simple.cc:32:17: note: jump bypasses variable initialization
            int b = 1;
                ^
    

    也就是说,跳到 case2 的这个地方,忽略了对于 b 这个变量的初始化,这个很直观,就是在这里我找不到 b。

    那么如果改成

    int Caset(int a) {
        switch (a) {
            case 1:
                int b;
                b = 1;
                std::cout<<"a==1: "<<b<<std::endl;
                break;
            case 2:
                b = 2;
                std::cout<<"a==2: "<<b<<std::endl;
                break;
        }
    }

    顺利成功,没有报错,如果 a 为 2,那么输出 b 也是 2,说明逻辑没有问题。那么问题来了,b 在前面声明,为什么后面可以用到呢,因为 switch-case 的逻辑控制就是用 label 来标记跳转的,而不是别的复杂的逻辑控制,所以 b 的作用域是在整个 switch 的花括号内,关于这个问题见知乎讨论请教switch内部的变量定义问题。
    C 语言

    上面两种写法统统出错,

    void Caset(int a) {
        switch (a) {
            case 1:
                /* one style */
                int b;
                b = 1;
    
                /* another style */
                int b = 1;
    
                printf("1: %d", b);
                break;
            case 2:
                b = 2;
                printf("2: %d", b);
                break;
        }
    }

    两种写法都错,报错信息:

    main.c:12:13: error: expected expression
        int b; 
        ^
    main.c:13:13: error: use of undeclared identifier 'b'
        b = 1;
        ^
    

    意思是说,此处需要一个表达式(expression),而不是一个变量声明初始化。有一个很黑客的做法,如下:

    void Caset(int a) {
        switch (a) {
            case 1:
                ; 
                int b = 1;
                // b = 1;
    
                printf("1: %d \n", b);
                break;
            case 2:
                b = 2;
                printf("2: %d \n", b);
                break;
        }
    }

    这个很不能理解了,其实也就是说保证 case 后面跟着的确实是 expression 即可。考虑一下 C++ 代码出现的问题:跳过变量的声明?C 语言中同样跳过,但是编译器不认为这个是错误,而且逻辑上面也是没有问题的,在后面的 case 中可以正常给变量赋值,但是如果 case2 中,我不是给 b 赋值,而是直接访问 b,那返回的数值就是一个随机的错误的数据了,我在我的电脑上使用 gcc 编译,若直接读取数据,得到的是 0,当然编译通过,连警告都没有。

    当然我认为这样的代码可读性差,比较好的做法可以是将声明变量的事情放在头上做。

    void Caset(int a) {
        switch (a) {
            int b;
            case 1:
                b = 1;
                // b = 1;
                printf("1: %d \n", b);
                break;
            case 2:
                b = 2;
                printf("2: %d \n", b);
                break;
        }
    }

    但是要留心, switch 和 case 之前那块地方也就只能写写这样的声明,写别的表达式,赋值啊什么的,统统是不会生效的。

    展开全文
  • 跟同事讨论代码时,经常冒出声明一个变量定义一个变量的话。虽然感觉没什么差别,但总是混淆不清,心里难受。查下资料,总结做个笔记总是没错的。 一:两者的定义 ...在C语言中,所有的变量都必...

           跟同事讨论代码时,经常冒出声明一个变量、定义一个变量的话。虽然感觉没什么差别,但总是混淆不清,心里难受。查下资料,总结做个笔记总是没错的。

    一:两者的定义

    • 变量定义

               用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

    • 变量声明

               用于向程序表明变量的类型和名字,一个变量可以有多个声明。在C语言中,所有的变量都必须先声明后使用。可以用extern这个关键字来声明已经定义的变量。

    二:两者的区别

    • 定义是特殊的声明,它为对象分配内存。声明没有分配内存,这是最大的区别。
    • 声明不一定是定义,定义一定包含声明。声明的变量名字已经匹配到一块内存上了,描述其他地方的创建的对象。
    • 一个变量只能定义一次,但可以多次声明。

    三:代码演示

    这边创建main.c、test.c、test.h三个文件进行演示。

    main.c

    #include<stdio.h>
    #include "test.h"
    
    /*
     * 声明变量d, 变量d在test.c里面定义,在这边或者test.h声明,
     * 才能在main.c里面调用。不声明的话,编译会失败,声明不分配内存。
     */
    extern int d;
    
    void main()
    {
        int a = 10;  /* 定义且声明变量,同时进行初始化,系统有分配内存 */
        int b;       /* 定义且声明变量,但不进行初始化,系统有分配内存 */
    
        b = 20;
        printf("a = %d, b = %d\n", a, b);
    
        fun_test();
        printf("c = %d, d = %d\n", c, d);
    }
    

    test.c

    #include<stdio.h>
    
    int c = 30; /* 定义且声明变量,同时进行初始化,系统有分配内存 */
    int d;      /* 定义且声明变量,但不进行初始化,系统有分配内存 */
    
    void fun_test()
    {
        d = 40;
        printf("hello test, c = %d, d = %d\n", c, d);
    }
    

    test.h

    #ifndef TEST_H
    #define TEST_H
    
    extern int c;           /* 声明变量c, 系统没有分配内存 */
    extern void fun_test(); /* 声明函数fun_test */
    
    #endif
    

     

    编译执行

    laiguoliang@earth:~/test/extern$ ls
    main  main.c  test.c  test.h
    laiguoliang@earth:~/test/extern$ ./main
    a = 10, b = 20
    hello test, c = 30, d = 40
    c = 30, d = 40
    laiguoliang@earth:~/test/extern$

     

    展开全文
  • C语言——全局变量定义与声明

    万次阅读 多人点赞 2019-09-28 12:31:34
    C语言中全局变量定义与声明困扰着许多C语言初学者。本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理。我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试。 两种错误例程 1....
  • C语言基础教程之如何定义变量

    千次阅读 2021-01-28 19:40:25
    变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; 在这里,type 必须是一个有效的 C 数据...
  • c语言常量和变量有什么区别? c语言常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 ...
  • C语言:定义变量

    2019-08-02 22:53:08
    C语言中,所有变量都必须先声明后使用.声明通常放在函数起始处,在任何可执行语句之前.声明用于说明变量的属性,它由一个类型名和一个变量表组成, 例如: #include <stdio.h> int main (void) { int fahr== ...
  • C语言全局变量定义方法

    万次阅读 多人点赞 2019-07-09 16:05:46
    C语言全局变量定义方法     今天调试系统的时候,需要定义几个全局位变量定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的。以前也定义过全局变量啊,但是先前怎么没错误?...
  • 关于C语言定义static变量的解释

    千次阅读 2020-03-07 11:39:55
    C语言中static类型的变量的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数。经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也...
  • C语言中如何使用全局变量简单示例,多文件.c中如何使用全局变量 关注“M2嵌入式”公众号,回复资源免费下载
  • 刚刚接触C语言,在写一个简单算法的时候发现一点小问题,记录一下 ...所以还是尽量不在for循环中定义变量吧 因为for语句中定义的变量只是这个循环中的局部变量,脱离循环就无法使用这个变量的值。
  • C语言定义变量的位置

    千次阅读 2019-03-03 20:21:55
    在标准C中规定变量定义必须放在所有的执行语句之前!一旦在运行语句之间再有定义的话,会报错误! 见以下式例: #include &lt;stdio.h&gt; int main() { char char1='A'; printf("大写字符=%c的ASCII码...
  • c语言基础-变量类型和定义

    千次阅读 2020-09-05 11:42:51
    c语言基础-变量类型和定义 一、常量与变量 常量:固定的一个值 例如1 2 3 A B 变量:一个固定的内存地址,其中存储的值可以变化,这个地址的名字在程序体现就是变量 例子: #include “stdio.h” int main(void) { ...
  • c语言中全局变量定义

    千次阅读 2017-06-28 08:00:50
    在同一个项目下含有多个cpp文件和头文件,如所有文件均将其头文件放入"stdafx.h",且cpp均包含#include "stdafx.h",需将全局变量前面加上extern,否则出现重定义
  • 今天调程序编译器报错说:变量重复定义。但是我仔细检查过了,确实没有重复定义。最后发现是因为一号.h文件中定义变量,但是同时在二号.h文件中包含了一号.h文件,“巧合的是”二号.h文件又被其他.c文件包含了。...
  • C语言只能在开头定义变量

    千次阅读 2017-10-03 17:44:03
    在vc中: C语言: 代码:   这样就报错! 因为在C语言变量声明只能在某个代码块(每个大括号就是一个代码块)的开头才行; 比如改成这样就行:
  • 变量定义变量也称为【标识符】; 定义单个变量 解释:定义一个int类型的price变量,它的值为0; int price = 0; 定义多个变量 int price1, price2; 构造标识符的规则 数字、字母、下划线组成,不能以数字...
  • C语言可以使用变量定义数组

    千次阅读 2021-04-19 17:04:42
    当时想给学弟学妹讲一下关于动态内存的问题,在讲述时我用了一个初始化变量时不能用变量作为下标。例如: int i = 5; char test[i]; 然而事实上,在这样写了之后我发现编译没有出错,这和我最开始学C语言时老师给...
  • C语言变量声明和定义

    千次阅读 2016-08-17 20:15:13
    很多初学者,对变量定义和声明分不请,C和C++中略有不同,再加上const、static、extern就更加混乱,下面就此问题给予详细讲解并举例说明。 变量定义:为变量分配存储空间,同时指明变量的类型和名字。另外...
  • 2.怎么区分全局变量声明和全局变量定义,定义肯定是在所有函数外面,但声明是可以在里面也可以在外面的,而在形式上,定义是int a,但是我看冯艳茹主编《C语言程序设计》国防科技大学出版社2017年6月第一版,这本书讲...
  • 问题描述:学习static定义静态变量的用法。 程序源码: #include"stdio.h" varfunc() { int var=0; static int static_var=0; printf("\40:var equal %d \n",var); printf("\40:static ...
  • 背景介绍 操作系统 : CentOS7.3.1611_x64 ...C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 将结构体的定义放入源码件中实现,头文件只放声明。 比如有
  • C语言extern全局变量避免重复定义

    千次阅读 2019-08-07 10:43:57
    在example.c中 int a = 0; 在example.h中 extern int a; 然后其他c文件#include "example.h"就可以了。
  • C语言变量的声明和定义

    万次阅读 多人点赞 2018-03-21 18:30:45
    变量声明和变量定义变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。变量声明:用于向程序表明变量的类型和名字。定义也是声明,extern声明不是定义定义也是声明:当定义...
  • C语言变量定义与声明

    千次阅读 2020-03-05 14:47:27
    C语言中全局变量定义与声明困扰着许多C语言初学者。本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理。我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试。 两种错误例程 1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 333,691
精华内容 133,476
关键字:

怎么定义变量c语言

c语言 订阅