c语言const修饰的变量可以通过指针修改其值

在没有优化的编译器中是可以修改的。在xcode6.1中在同一个函数中是不可以修改的但通过一个函数调用可以修改如。

debian 8.1中是可以直接修改的。以上只是我个人学习中的理解。

int changeValue(const int value)

{

  int *p = NULL;

  p = &value;

  *p = 20;

  return value;

}

int main(void)

{

  int  changeValue(10);

  printf("value = %d\n", value);

  reruen 0;

}

时间: 2024-09-29 20:12:25

c语言const修饰的变量可以通过指针修改其值的相关文章

const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改

大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; } 在C++中const修饰的常量,不能被直接修改,但是可以通过指针进行间接修改 来看下面的例子:           原意是想通过指针修改const常量a的值,但是运行后发现输出的a依然是3,a的值表面上并没有被改变. 但是查看内存窗口,发现a已经被改变,这里是编译器优化导致的,遇见a时编译器直接从寄存器中读取3给a,而不从内存中读取! 为了改善这种状况,我们

const 修饰成员函数体

经过const修饰的变量表示不能被修改这个容易理解,例如 const int kInt = 0; // kInt 不能再被赋予其他值 const int getValue(const char *key); // 返回值为不能被修改,函数体内不能修改参数的值 后来碰到一些写法如 const int getValue(const char *key) const; 对于最后一个const不甚理解,查资料后才明白这个用于类的成员函数修饰函数体,表示该函数体内类的成员变量的值不能被改变 class T

【C语言】函数参数中的const修饰符

  通常,字符串操作函数原型中,都会在形参前面加上const修饰符,表示此指针不能用于修改字符串的值   比如:char *strcpy(char *strDest, const char *strSrc)  但是可不可以通过 在函数里定义一个指针指向strSrc,来改掉字符串的值呢? 给出以下代码: #include <STDIO.H> #include<stdlib.h> void fuc(const char *p) { char *q = p; *q='b'; } int

(转)const变量通过指针修改问题

程序笔试题-const变量通过指针修改问题 2012-10-06 20:45:18 分类: C/C++ const的变量在特定情况下可以通过指针修改,但是在另一些情况下是不能通过指针修改. 以下是VC6下才测试. 1 不能修改的情况 #include <stdio.h>int const a = 10;void main(void){ int *p = (int*)&a; *p = 20; printf("%d\n", *p);} 程序编译通过,但运行时错误: 指示

C语言-const和volatile深度分析

1.const只读变量 const修饰的变量是只读的.本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在全局数据区分配空间 const只在编译期有用,在运行期无用 const修饰的变量不是真的变量,它只是告诉 编译器该变量不能出现在赋值符号的左边实例一.cpp: 1 #include <stdio.h> 2 3 const int g_cc = 2; 4 5 int main() 6 { 7 const int cc = 1; 8 9 int* p = (int*

const修饰符简述

1.const限定符的使用 1)定义const常量:const可以将一个对象变成常量,不可被修改(只读类型),在定义时必须进行初始化.例如: const double mathPI = 3.141592653; 2)修饰函数的参数.返回值等.被const修饰的东西将不再改变: 3)若在整个程序中使用其他文件的变量: //若变量为非const //file_1.cpp int months = 10; //file_2.cpp extern int months; //const修饰的变量 //f

[Reprint]C++函数前和函数后加const修饰符区别

c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostream> 02   03 using namespace std; 04   05 // Ahthor:  过往记忆 06 // E-mail:  [email protected] 07 // Blog:    http://www.iteblog.com 08 // 转载请注明出处 09   10

Delphi 中 函数参数中的 const 修饰符的本质以及注意事项

来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------------------------------------------ 很多书籍中说函数参数如果是String类型的,如果在函数内部不改变参数的值,使用 const 修饰符会加快程序的执行速度,至于如何加快的?有的人说是因为 const 函数保证了参数字符串不会被复制.以前也没有对这个问题深入研究

const 修饰指针的4种情况

  注意:        函数头后加const,表示的是常成员函数,常成员函数理解为是一个"只读"函数,它既不能更改数据成员的值,也不能调用那些能引起数据成员值变化的成员函数,只能调用常成员函数.       const成员函数中,用mutable修饰成员变量后,就可以修改类的成员变量了. 版权声明:本文为博主原创文章,未经博主允许不得转载.