const相关内容

可一个const变量用来声明C中的数组的大小?

为什么以下code抛出一个错误? const int的一个= 5; INT苯并[a] = {1,2,3,4,5}; 和也,当我试图编译上面的code没有“常量”关键字,我得到了同样的错误: int类型的= 5; INT苯并[a] = {1,2,3,4,5}; 为什么会这样? 什么是我在这里做什么错误了吗? 和另一种问题: 当常数与它们的实际值替换在code,即如果我声明一个变量说:co ..
发布时间:2016-08-17 23:35:24 C/C++

对于常量使用可变指针修改混乱

下面的示例我的理解添加混乱。我无法理解怎么可能修改常量局部变量。请帮我理解是相同的。 / *编译code,而不优化选项* / // volatile.c #包括LT&;&stdio.h中GT; INT主要(无效) { const int的地方= 10; 为int * PTR =(INT *)及地方; 的printf(“本地初始值数:%d \\ n”,本地); ..
发布时间:2016-08-17 23:26:13 C/C++

混合extern和常量

我可以混合extern和常量,如的extern常量的?如果是,那么的常量的限定词强加它的统治只是它在声明的范围内,还是应该正是它在声明平移单元的声明相匹配?即我可以声明说的extern const int的我; 即使实际的 I 的不是一个常量,反之亦然。 解决方案 是的,你可以同时使用它们。 是的,它应该恰好它在实际中声明的翻译单元的声明相匹配。当然,除非你正在参与不诚实的C程序设计 ..
发布时间:2016-08-17 23:20:48 C/C++开发

为什么我可以改变一个const char *变量的值?

为什么以下code用C的工作? 为const char *海峡= NULL; 海峡=“测试”; 海峡=“测试2”; 由于str是一个指向一个恒定的性格,为什么我们允许它分配不同的字符串?此外,我们如何保护海峡被修改?这似乎是如果,例如,我们以后被分配海峡到最后写了内存另一部分更长的字符串,这可能是一个问题。 我要补充一点,在我的测试中,我打印出str的内存地址之前和之后我的每个任务的,它从来 ..
发布时间:2016-08-17 23:14:30 C/C++

什么是静态和const变量之间的区别?

有人能解释一个静态之间的差异和常量变量? 解决方案 一个恒定值不能改变。静态变量存在于一个函数或类,而不是一个实例或对象。 这两个概念不是相互排斥的,并且可以一起使用。 ..
发布时间:2016-08-17 23:07:28 C/C++开发

有常量用C?

这问题可能很幼稚,但是: 有用C常量关键字? 自哪个版本? 有没有在C和C ++ 常量之间的任何语义和/或语法上的不同? 解决方案 有关于C和C ++之间没有语法上的不同,以常量关键字,除了一个相当不起眼的1 :在C(因为C99),你可以声明函数的参数为​​ 无效美孚(INT A [常量]); 这相当于无效美孚(INT * const的一个); 声明。 C ++不支持这 ..
发布时间:2016-08-17 23:06:53 C/C++开发

有什么用const的指针(而不是指向const对象)?

我经常用指针const对象,像这样...... const int的* P; 这只是意味着你不能改变的 P 以通过 P 指向整数。但是,我也看到了参考常量指针,声明如下... 为int * const的磷; 据我了解,这意味着,指针变量的本身的是不变的 - 你可以改变它指向整天的整数,但你不能在别的东西使它指向。 它会带来什么可能的用途? 解决方案 当你设计C程序为需要引用相同的 ..
发布时间:2016-08-17 23:06:39 C/C++开发

什么是常量指针的地步?

我说的不是指针常量的值,但是常量指针自己。 我学习C和C ++以外的非常基本的东西,只是直到今天我才意识到指针按值传递给函数,这是有道理的。 这意味着函数内我可以复制的指针指向一些其他的价值,而不会影响从调用者原来的指针。 那么,什么是有一个函数头,说点: 无效美孚(INT * const的PTR); 在这样的功能,你不能让PTR点别的东西,因为它是const和你不希望它被修改,但这样 ..
发布时间:2016-08-17 23:02:36 C/C++开发

常量用C VS用C ++常量

给定的code编译在C,但在C未能++。 INT的main() { const int的X; / *未初始化的常量编译在C,但在C ++中失败* / } 什么是理由,并从C到C ++的变化背后的原因是什么? 解决方案 查看规格,在兼容性附录C.1.6: 7.1.6 [参见3.5] 更改 const对象必须在C ++初始化,但可以留未初始化用C ..
发布时间:2016-08-17 22:57:20 C/C++开发

什么样的优化确实在C / C ++常量报价?

我知道在哪里可以通过引用或指针为可读性和优化的原因,各地传递参数时,你应该使用const关键字。现在是什么样的优化可以,如果我指定一个说法是恒定的编译器吗? 有可能是几例: 功能参数: 恒参考: 无效美孚(常量SomeClass的&放大器; OBJ) 恒SomeClass的对象:无效美孚(常量SomeClass的* pObj) 和常量指针SomeClass的:无效美孚(SomeCl ..
发布时间:2016-08-17 22:44:07 C/C++开发

简单的规则来读取复杂const声明?

有关阅读复杂的指针声明还有就是左右规则。 但是这个规则并没有提及如何读常量修改器。 例如在一个简单的指针声明,常量可以通过多种应用方式: 的char *缓冲区; //非const指针指向非const内存 为const char *缓冲区; //非const指针常量内存 字符常量*缓冲区; //相当于previous declartion char * const的缓冲= {0}; //常量指 ..
发布时间:2016-08-17 22:39:07 C/C++开发

在C语言中,可以一个const变量通过指针进行修改?

我写了类似这样的一些东西在我的code const int的X = 1; INT * PTR; PTR =安培; X; * PTR = 2; 关于是否所有的编译器这项工作吗?为什么不,我们正在改变一个常数变量GCC编译器通知? 解决方案 常量其实并不意味着“常量”。东西是“常量”用C具有的在编译时确定的值;文字 42 就是一个例子。在常量关键字的真正含义是只读的。举个例子: cons ..
发布时间:2016-08-17 22:30:27 C/C++

Ç - 访问通过常量声明一个非const

正在访问一个非 - 常量通过对象常量声明C标准允许的? 例如。为保证编译及以下code符合标准的平台上输出23和42? 翻译单元答: int类型的= 23; 无效美孚(无效){a = 42; } 翻译单元B:的#include<&stdio.h中GT;挥发性的extern const int的一个; 无效美孚(无效);诠释主要(无效){ 的printf(“%I \\ N” ..
发布时间:2016-08-17 22:29:56 C/C++

用C const修饰词的深层分析

在哪里一个常量变量被存储准确,它是如何改变行为?例如说: const int的我= 10; //门店在哪里? 主要() { const int的J = 20; //门店在哪里? 返回0; } 如果答案是code段再怎么做以下code的工作?? 的main() { const int的J = 20; INT * P; P =&放大器;焦耳; (* P)+; ..
发布时间:2016-08-17 22:25:57 C/C++

应返回类型没用类型限定符被使用,为了清楚?

我们的静态分析工具,抱怨了“关于返回类型无用的类型限定词”当我们在头文件中的原型,如: const int的富(); 我们将它定义这种方式,因为该函数返回永远不变的常数,以为API似乎与到位常量清晰。 我喜欢这种感觉类似于明确初始化的全局变量至零为清楚起见,即使C标准已经规定,如果没有明确的初始化所有全局将被初始化为零。在一天结束的时候,它其实并不重要。 (不过,静态分析工具不会抱怨的。) ..
发布时间:2016-08-17 22:25:29 C/C++

的typedef指针常量的怪事

请考虑以下code: typedef结构人* PersonRef; 结构{人 INT年龄; };常量PersonRef人= NULL;无效changePerson(PersonRef newPerson){ 人= newPerson; } 由于某些原因,编译comlaining有关只读值不可转让。但const关键字不应使指针常量。任何想法? 解决方案 注意的typedef IN ..
发布时间:2016-08-17 22:25:17 C/C++

无法自由使用C常量指针

我怎么能释放一个为const char * ?我使用的malloc 分配新的内存,当我试图释放它,我总是收到错误“不兼容的指针类型” 在code导致此是一样的东西: 的char * name =“阿诺德”; 为const char *海峡=(为const char *)malloc的(strlen的(名字)+1);免费(STR); //此处错误 解决方案 有几个人已经张贴了正确的答案, ..
发布时间:2016-08-17 22:24:49 C/C++

常量的使用与C指针

我要在C和有关于使用指针常量使用的问题。我了解以下code: 为const char *的someArray 这是定义一个指向类型char和在常量修改意味着一个指针存储在的someArray 不能改变。然而,什么是下面的意思吗? char * const的数组 这是指定一个参数,该参数是一个字符指针到名为“阵”的数组是的另一种方式常量,不能进行修改? 最后,这是什么意思的组合:为con ..
发布时间:2016-08-17 22:24:11 C/C++

char *与为const char *之间的区别?

有什么之间的差 的char *名称 指向一个常量字符串,以及为const char *名称 解决方案 的char *名称 您可以更改至名称点,以及在它指向炭炭。为const char *名称 您可以更改到名称点炭,但不能在修改它指向的字符。 修正:的:您可以改变指针,但的不的炭到名称点( ..
发布时间:2016-08-17 22:13:03 C/C++

常量性和指针的指针

我非常困惑的常量关键字。我有一个函数接受字符串作为输入参数和函数接受可变数量的参数的数组。 无效dtree_joinpaths(字符* output_buffer,诠释计数,...); 无效dtree_joinpaths_a(字符* output_buffer,诠释计数,为const char **路径); dtree_joinpaths 内部调用 dtree_joinpaths_a 之 ..
发布时间:2016-08-17 22:10:24 C/C++