C 语言 const 关键字


#include <stdio.h>

int main(void){
int i = 1;
int j = 100;
const int * temp = &i;
printf("%d\n",*temp);
i = 2;
printf("%d\n",*temp);
temp = &j;
printf("%d\n",*temp);

return 0;
}

输出

1
2
100


#include <stdio.h>

int main(void){
int i = 1;
int j = 100;
int const * temp = &i;
printf("%d\n",*temp);
i = 2;
printf("%d\n",*temp);
temp = &j;
printf("%d\n",*temp);

return 0;
}

输出

1
2
100

结论

如果const在‘*‘左边,则表示指针指向的变量的值不可变

如果const在‘*‘右边,则表示指针的值是不可变的

问题:

i = 2;
printf("%d\n",*temp);
i 重新赋值,*temp指向的值发生改变
怎么解释?
编译器行为,怀疑不能显示通过 *temp修改变量值


C 语言 const 关键字,布布扣,bubuko.com

时间: 2024-10-25 06:05:28

C 语言 const 关键字的相关文章

c语言const关键字

作者:沉默羔羊 c语言const关键字: --  特点. 使用该关键修饰的变量不能被改变.      --指针常量. demo:   const char *p或者是 char const * p --常量指针. demo: char * const p      --常量指针和指针常量. 1.常量指针指的是如 char * const p, p是一个常量,p不能改变指向. 2.指针常量指的是如char const *p,   p指向一个字符常量,p可以改变指向.但是不能改变*p. --对于常量

c语言 const关键字辨析

#include <stdio.h> void func_1(const int* i){ func_2(i); } void func_2(int* i){ *i++; printf("i in func_2 %d\n", *i); } int main(){ int i=0; func_1(&i); printf("i in whole situation %d\n", i); return 0; } 输出结果: i in func_2 0

C语言之头文件,static与const关键字

[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔记之类的自己写写笔记,今天整理成博客,以便自己以后回顾. [正文] C语言头文件:将其理解为C语言模块化编程向外提供一个接口描述文件.一般包括一些供外部函数或者文件使用的变量声明,函数声明,数据类型定义以及宏定义等.举例: /*************************************

一起talk C栗子吧(第一百六十四回:C语言实例--const关键字)

各位看官们,大家好,上一回中咱们说的是三目运算符的例子,这一回咱们说的例子是:const关键字 .闲话休提,言归正转.让我们一起talk C栗子吧! 我们在前面章回中介绍了很多系统编程接口,在这些接口的参数中经常出现const关键字,有看官对此提出了疑问"这些const有什么用处呢?".今天,我将和大家一起来解决该疑问. 在C语言中const是一种修饰符,经常用来修饰变量.使用它修饰以后的变量,就成为常量.常量是不允许被修改的.下我们举个简单的例子来说明const的用法. 1 #inc

C语言中关键字auto、static、register、const、volatile、extern的作用

原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)reg

【C语言天天练(十四)】const关键字详解

const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,了解const的作用,在看别人的代码时,对理解对方的程序有一定帮助. 1.const可以理解成是"只读变量"的限定词,从这里可以看出,const修饰的是变量,跟常量是不同的,常量是被编译器放在内存中的只读区域,当然也就不能够去修改它.而"只读变量"则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改.const就是用来限定一

C语言之const关键字

const关键字在C代码中很常见,下面总结一下其作用: 1.将一个变量声明为常量,即只读的.这一点跟#define 是相似的,如:   const int a; 这时候,a就被视为一个常量,具有不可修改的性质.这个声明的问题是没有对a初始化,编译器给a分配的空间,以前是什么值,默认就是什么值,所以以后要给a赋值会报错. 恰当的声明应该是这样的:     const int a = 3; 即,声明的同时进行初始化.需要注意的是,int const a = 3; 效果是一样的,在这种情形下,cons

C语言中关键字volatile的含义【转】

本文转载自:http://m.jb51.net/article/37489.htm 本篇文章是对C语言中关键字volatile的含义进行了详细的分析介绍,需要的朋友参考下 volatile 的意思是“易失的,易改变的”.这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化.通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx.当CPU把其值放到ebx中后就不会再关心对应内存中的值.若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并

《OOC》笔记(1)——C语言const、static和extern的用法

<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用const修饰的函数形参 直接修饰 一个形如 int Minus(const int a, const int b, int testCase); 的函数,const的意义是什么呢? 答:参数a被const修饰,说明在Minus函数内,编译器不允许a被别的变量(例如x)赋值(修改).参数b同理. 如果你写了a