首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字)

这里将错误代码注释掉....: 编译器查找 const 常量是否当做右值,如果出现 int a = const_variable, 那么直接将 const_variable 替换为 666; 如果出现 int p = (int)..., 右边指针是常量)***; >**左数** : ***const 出现在 * 左边时, 指针指向的数据为常量***, 指向的数据不可改变; >**右指** : ***const 出现在 * 右边时,...错误示例 ) const 修饰指针规则 : 左数右指; 左数 : const 出现在 * 左边时, 指针指向的数据为常量, 指向的数据不可改变; 右指 : const 出现在 * 右边时, 指针地址本身是常量...,其中定义int和char类型元素,两个元素共用一个内存空间 union check_end { int i; char c; } a; //将大空间的int赋值为1 a.i =

2.4K20

golang学习笔记3:常量与变量

显式类型定义: const b string = "abc" 隐式类型定义: const b = "abc" 一个没有指定类型的常量被使用时,会根据其使用环境而推断出它所需要具备的类型。...换句话说,未定义类型的常量 会在必要时刻根据上下文来获得相关类型。...正确的做法: const c1 = 2/3 错误的做法: const c2 = getNumber() // 引发构建错误: getNumber() used as value 因为在编译期间自定义函数均属于未知...不过需要注意的是,当常量赋值给一个精度过小的数字型变量时,可能会因为无法正确表达常量所代表的数值而导致溢出,这会在编译期间就引发错误。...需要注意的是,Go 和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后。Go 为什么要选择这么做呢?

54610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言算法及常量变量相关知识【C语言学习笔记】

    例:”hello“ "aaa\"t\n\b” 符号常量:在C语言中,通常将程序中的常量定义为一个标识符,这个常量就叫做符号常量。...*内存:正在执行程序的数据 硬盘:长期保存未使用的数据* 1.先定义变量的格式:数据类型 变量名 例:int i;double price 数据类型:表示想要存储什么类型的数据就定义什么类型的变量。...2.变量定义完了之后接下来就是使用变量,为变量赋值。 赋值:将一个值放到一个变量中,这个动作叫“赋值”。通俗点讲,“给变量赋值”意思就是将一个值传给一个变量。 赋值的格式:变量名 = 要赋的值。...赋值过程中的类型转换 1.将浮点型数据赋值给整型变量时,直接舍弃小数部分。 2.将整型数据赋值给浮点型时,数值不变,以指数形式存储到浮点型变量中。...强制类型转换 强制类型转换的格式为: (type_name) expression type_name为新类型名称,expression为表达式。

    1.1K20

    面向对象之this指针与类中的枚举类型

    (2)this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。...2.类中的枚举类型 有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想到实用const 修饰数据成员来实现。...A::A(int size) : SIZE(size) // 构造函数的定义 { } A a(100); // 对象 a 的 SIZE 值为 100 A b(200); // 对象 b 的...SIZE 值为 200 怎样才能建立在整个类中都恒定的常量呢?...枚举常量不会占用对象的存储空间,它们在编译时被全部求值。 枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点。

    1.2K10

    《Go语言精进之路:从新手到高手的编程思想、方法和技巧1》10-12章笔记

    = 1开始正式定义枚举常量,可以效仿下面的代码: 图片 ---- 图片 iota虽然是第一次使用,但它在const块的第二行,所以值为1,而不是0 ---- 举一个“反例”:在一些枚举常量名称与其初始值有强烈对应关系的时候...,枚举常量会直接使用显式数值作为常量的初始值。...---- 第12条 使用复合字面值作为初值构造器 图片 ---- 12.1 结构体复合字面值 一旦该结构体类型增加了一个新的字段,即使是未导出的,这种值构造方式也将导致编译失败,也就是说,应该将...可读性更好、增加字段不会编译错误(解耦)、无顺序要求、不容易出错 ---- 复合字面值作为结构体值构造器的大量使用,使得即便采用类型零值时我们也会使用字面值构造器形式: s := myStruct{...,当元素为复合类型时,可以省去元素复合字面量中的类型,比如: 图片 还有map ---- 对于key或value为指针类型的情况,也可以省略“&T” ---- 对于零值不适用的场景,我们要为变量赋予一定的初值

    56050

    Java从入门到精通十(java异常)

    而getclause()告诉你异常的类型和异常信息。 但是一般我情愿去用getMessage(),输出信息一般也会很容易看出是哪里出现了问题。...2:ArrayStoreException(数组存储异常) 一般的是存储类型不匹配 java api对此错误的说明就是 试图将错误类型的对象存储到一个对象数组时抛出的异常。...EnumConstantNotPresentException(枚举访问不存在异常) 当应用程序试图通过名称和枚举类型访问那些不包含具有指定名称的常量的枚举常量时,抛出该异常。...15:TypeNotPresentException(类型不存在异常) 当应用程序试图使用表示类型名称的字符串对类型进行访问,但无法找到带有指定名称的类型定义时,抛出该异常。...该异常可能由元素 visitor 抛出,指示已经为以前的语言版本创建了 visitor。 18:UnknownTypeException(未知类型异常) 指示遇到未知种类的类型。

    1.4K40

    【重拾C语言】七、指针(二)指针与数组(用指针标识数组、多维数组与指针、数组指针与指针数组)

    通过将数组名转换为指针,可以通过指针来访问数组中的元素。...数组名是指针(常量),指针也是数组 int a[5]; int *p p=a; // 也可写成 p=&a[0] 访问数组a的第i个元素,如下操作等价 a[i] *(a+i...如果超出了数组的有效索引范围,将会导致未定义的行为,可能会访问到未知的内存区域,从而引发错误或崩溃。...指针数组的声明形式为type *arrayName[size],其中type是指针指向的数据类型,arrayName是数组的名称,size是数组的大小。...指向的数组的元素类型是固定的。 数组指针的声明形式为type (*ptrName)[size],其中type是指针指向的数据类型,ptrName是指针变量的名称,size是数组的大小。

    16510

    Go 编码建议

    变量和常量注释 类型注释 8.命名规范 包命名 文件命名 函数命名 结构体命名 接口命名 变量命名 常量命名 方法接收器命名 避免使用内置名称 9.流程控制 if for range switch...例如,表驱动测试中的测试用例可以受益于字段的名称,即使它们是零值的。...该注释对类型进行简要介绍,放在定义的前一行。 格式为:"// 类型名 描述"。...若变量类型为 bool 类型,则名称应以 Has,Is,Can 或者 Allow 开头。 私有全局变量和局部变量规范一致,均以小写字母开头。...因此,导出的函数应先出现在文件中,放在struct, const, var定义的后面。 在定义类型之后,但在接收者的其余方法之前,可能会出现一个newXYZ()/NewXYZ()。

    82630

    Go 编码规范建议

    例如,表驱动测试中的测试用例可以受益于字段的名称,即使它们是零值的。...注释对常量或变量进行简要介绍,放在常量或变量定义的前一行。 大块常量或变量定义时,可在前面注释一个总的说明,然后每一行常量的末尾详细注释该常量。...该注释对类型进行简要介绍,放在定义的前一行。 格式为:"// 类型名 描述"。...若变量类型为 bool 类型,则名称应以 Has,Is,Can 或者 Allow 开头。 私有全局变量和局部变量规范一致,均以小写字母开头。...因此,导出的函数应先出现在文件中,放在struct, const, var定义的后面。 在定义类型之后,但在接收者的其余方法之前,可能会出现一个newXYZ()/NewXYZ()。

    1.5K10

    C语言动态内存分配函数

    n]; 这样编写会在编译时出错 , 编译器会提醒[ ]中应为常量表达式 , 在C中定义数组时可以用的有以下几种 ,例: #define N 10...(int)*n). 4).如果size为0, 此行为是未定义的, 会发生未知错误, 取决于编译器 具体怎么用呢 ,举个例子 ....,这个n的值并不需要像定义一个普通数组一样必须是常量, 可以使程序运行时得出的, 或是用户输入的 ----  2.free() void free(void* ptr) 在堆中申请的内存空间不会像在栈中存储的局部变量一样...,方法是在calloc()前加强制转 ,转化成我们所需类型 ,如: (int*)calloc(num, sizeof(int)). 4).如果size与num有一个或都为0, 此行为是未定义的, 会发生未知错误...那realloc() 函数就可以做到对动态开辟内存大小的调整(既可以往大调整, 也可以往小了调整) . 1).ptr为需要调整的内存地址 2).size为调整后需要的大小(字节数) 3).若调整成功,

    1.6K30

    《effective Go》读后记录:GO基础

    出现在顶级声明之前,且与该声明之间没有空行的注释,将与该声明一起被提取出来,作为该条目的说明文档。 命名 Go语言的命名会影响语义:某个名称在包外是否可见,取决于其首个字符是否为大写字母。...如果在一行中写多个语句,需要用分号隔开 控制结构的左大括号不能放在下一行,因为根据词法分析器的规则,会在大括号前加入一个分号,造成错误 初始化 常量必须在定义的时候就进行初始化。...常量只能是数字、字符、字符串、布尔值等基本类型,定义它们的表达式必须是在编译期就可以求值的类型。...defer语句是在函数级别的,即使把它写在大括号(块)中,也只会在调用函数结束时才调用被推迟执行的函数。 使用defer语句时还有一些细节需要注意。...fmt.Print(myFloat) } 这里的6为整型类型的字面值常量 Integer literals.。

    72240

    C语言-数组

    数组的定义语法: int data[10]; 类型> 名称>[常量-整数-数据数量]; 定义一个int类型的数组,数组的名称是data,长度是10,所占空间大小:4*10 字节。...数组只是支持在定义的时候进行整体赋值。 3. 数组定义的时候,[]里只能填常量。数组在定义之后就无法更改大小。 4. 数组的空间是连续的—内存。 5. 数组的名称就是数组空间的首地址。 6....数组名称虽然是地址,但是这个地址是不能偏移、也不能自增自减,也不能改变指向。...比如: int a[10]={1,2,3}; printf("%d\n",a[6]); //0 6. 数组定义的时候(C89), 数组的下标里的大小只能填常量。...比如: int a[]; //错误的,定义数组必须填大小 int size=10; int a[size]; //错误的,定义数组只能填常量。

    4K10

    Go语言学习12-数据的使用

    2.1 常量在 Go 语言中,常量总会在编译期间被创建,即使它们作为局部变量被定义在了函数内部。常量只能由字面量常量或常量表达式来赋值。常量表达式是能够且会在编译期间被求值的。...随着在同一条常量声明语句中包含 iota 的常量声明的数量的增加,iota 所表示的整数值也会递增。...短变量声明与普通变量声明一样,也支持平行赋值。例如:v7, v8 := "Go", 1.2重声明仅会出现在短变量声明中,可以理解为对当前的已存在变量的又一次赋值。...注意 :空标识符"_" 代表的并不是新的变量,即使它在当前上下文环境中并没有出现过。...如果其中一个结构体类型声明中有匿名函数,那么在另一个结构体类型的声明中的对应位置上的字段声明也必须不包含名称,否则,它们就是不相等的。

    13221

    Go - 快速入门

    数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 布尔型 布尔型的值只可以是常量 true 或者 false。...值类型的变量的值存储在栈中。 内存地址会根据机器的不同而有所不同,甚至相同的程序在不同的机器上执行后也会有不同的内存地址。 因为每台机器可能有不同的存储器布局,并且位置分配也可能不同。...,我们不可以再次对于相同名称的变量使用初始化声明,例如:a := 20 就是不被允许的,编译器会提示错误 no new variables on left side of :=,但是 a = 20 是可以的..., value2 特殊常量 枚举常量 const ( Unknown = 0 Female = 1 Male = 2 ) 数字 0、1 和 2 分别代表未知性别、女性和男性。...iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

    81910

    3.Go变量 常量申明 变量命名规则

    Golang 中常见的变量定义方法如下: 1.1、var 定义变量 var 变量名 类型 = 表达式 var name string = "zhangsan" 1.2、类型推导方式定义变量 在函数内部,...,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。...当然我们也可在声明变量的时候为其指定初始值。...iota 在 const 关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。...iota 只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 每次 const 出现时,都会让 iota 初始化为 0.

    23810

    面试官:说下你对方法区演变过程和内部结构的理解

    但是它会受到本机总内存大小以及处理器寻址空间的限制,所以如果这部分内存也被频繁的使用,依然会导致 OOM 错误的出现。 方法区的大小 方法区的大小是可以进行设置的,可以选择固定大小也可以进行扩展。...方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,比如:加载大量的第三方 jar 包、Tomcat 部署的工程过多、大量动态生成反射类等都会导致方法区溢出,抛出内存溢出错误。...为了避免频繁地GC,建议将 -XX :MetaspaceSize 设置为一个相对较高的值。...域(Field)信息 JVM必须在方法区中保存类型的所有域(field,也称为属性)的相关信息以及域的声明顺序; 域的相关信息包括:域名称、 域类型、域修饰符(public, private,protected...non-final 的类变量 静态变量和类关联在一起,随着类的加载而加载,他们成为类数据在逻辑上的一部分 类变量被类的所有实例所共享,即使没有类实例你也可以访问它。

    46140

    100天精通Golang(基础入门篇)——第4天: Go语言中的变量与常量详解:声明、赋值和使用

    首先,我们将介绍变量的声明和赋值的不同形式,并解释类型推断和简短声明的特点。然后,我们将探讨常量的声明和使用,包括不同类型常量的定义和常量组中的iota常量。...最后,我们将总结学习过程中的关键点,帮助读者加深对Go语言中变量和常量的理解。 基本语法——变量 一、变量的使用 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称。...(同一个作用于域内不能冲突) 简短定义方式,左边的变量名至少有一个是新的 简短定义方式,不能定义全局变量。 变量的零值。也叫默认值。 变量定义了就要使用,否则无法通过编译。...如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,例如:a := 20 就是不被允许的,编译器会提示错误 no new variables on left side of :=,但是...// 隐式类型定义的常量,类型会根据赋值自动推断 var area int // 声明一个名为area的变量,类型为int const a, b, c = 1

    15010

    同时搞定Android和iOS的Dart语言(2):变量与常量

    int num; // 整数类型的变量 String s; // 字符串类型的变量 在定义变量时可以同时为变量赋值,也称为初始化,所以可以用下面的代码为num和s赋值。...int num = 20; String s = "hello world"; 如果在定义变量时指定了数据类型,那么就意味着变量的数据类型不可以改变,例如,上面代码中已经将num变量定义为int类型,...num变量由于在定义时已经初始化了,所以num的数据类型会根据初始化的值自动识别,很显然,20属于int类型的值,所以num变量的数据类型就是int,而且与直接指定变量的数据类型一样,num变量的数据类型将永久固定...即使在后面为变量赋了值,该变量仍然是dynamic类型的变量,如var value; 直接使用dynamic类型定义变量,如dynamic value; 本例演示了各种定义和使用变量的方式。...username = '小明'; // 无法给常量赋值,会出现编译错误 value = 4321; // 无法给常量赋值,会出现编译错误 那么可能有的读者会问

    72930

    面试爱问之const关键字

    2、define定义的是常量,define定义的宏在编译后消失了,它不占用内存,而const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元,除了不能作为数组的长度,用const...3、define定义的对象没有数据类型,编译器只能机械地进行字符替换,没有类型安全检查,即会出现“边际问题”或者是“括号问题”。而const定义的是变量,有数据类型。...const修饰字符串常量:字符串常量位于文字常量区(也有文章归类于代码区),本身就不允许被修改,如果没有const的修饰,我们可能会在后面有意无意的修改字符串常量,这样会导致对只读内存区域的赋值,然后程序会立刻异常终止...如果const在星号的左边,则为常量指针 如果const在星号的右边则为指针常量 如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。...因此,有三种情况可讨论: 1、函数参数为值传递: 值传递(pass-by-value)是传递一份参数的拷贝给函数,因此不论函数体代码如何运行,也只会修改拷贝而无法修改原始对象,这种情况不需要将参数声明为

    34720
    领券