码迷,mamicode.com
首页 > 其他好文 > 详细

C指针常量与常量指针

时间:2016-08-12 01:17:42      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

c语言中声明常量的两种方式

const   int   value
int   const   value

如果要声明常量的指针,即指向常量的指针,则可以参考上面的常量声明修改一下

const   int   *ptr
int   const   *ptr

把*ptr看成一个整体,那么*ptr中的ptr就是指向常量的指针了。顾名思义,指向常量的指针,那么就不可以通过这个指针去修改这个值了。

#include <stdio.h>

int main(){

	int val = 123;
	int const *ptr = &val;

	*ptr = 111;

	return 0;
}

会报错:
error: read-only variable is not assignable
        *ptr = 111;
        ~~~~ ^
1 error generated.

但仍可以通过其他方式修改这个量的值。例如

#include <stdio.h>

int main(){

	int val = 123;
	int const *ptr = &val;
	val = 222;

	printf("%d\n", *ptr);

	return 0;
}
输出:222

常量指针的意义就是不可以通过这个指针去修改它所指向的值

 

指针常量

可以理解为先定义一个常量,并且这个常量为指针类型。

int val = 123;
int * const ptr = & val;

ptr只是一个常量,它的值是一个固定的内存地址。

#include <stdio.h>

int main(){

	char *message = "hello, world\n";

	//此处ptr是"hello,world\n"的内存地址
	char * const ptr = message;
	printf("%s\n", ptr);

	//就算修改了message的值,也没有修改ptr的值,ptr依旧指向 "hello, world\n"
	message = "hello, maomao\n";
	printf("%s\n", ptr);

	return 0;
}

输出
hello, world

hello, world

指向常量的常量指针

char const  *  const ptr;

该指针为常量,同时不可以通过该指针修改指向的值。

C指针常量与常量指针

标签:

原文地址:http://www.cnblogs.com/yangxunwu1992/p/5763206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!