C语言指针学习(-)
来源:互联网 发布:mac忘记了管理员密码 编辑:程序博客网 时间:2024/05/21 15:46
一、首先理解几个概念:
1、指针常量、常量指针、指针变量。
关键:const关键字的含义。
(1)指针常量:指针自身不可改变;
定义:int * const p//p值一旦初始化,不可改变;
以下是在VS2015中编译:
#include "stdio.h"int main() {int arr[] = { 1,2,3,4,5 };int * const p = arr;p++;//vs2015:erro C2166: l-value specifies const object/*注释本行方可运行*/*p = 8;//ok printf("%d", *p);//output:8while (1);return 0;}注意语义:const修饰的是p,所以p不可改变,理所当然。
(2)常量指针:指针指向的对象(内容)不可改变;
定义:int const *p = arr;//arr为地址
以下是在VS2015中编译:
#include "stdio.h"int main() {int arr[] = { 1,2,3,4,5 };int const *p = arr;p++;//ok!*p = 8;//error C2166: l-value specifies const object /*注释本行方可运行*/printf("%d", *p);//output:2while (1);return 0;}
注意语义:const修饰的是*p,所以*p不可改变,理所当然。
注:如下,可猜到,p,和*p都不可改变。
int const * const p;
那么 数组是什么指针?
#include "stdio.h"int main() {int arr[] = { 1,2,3,4,5 };int a = 8;arr++;// error C2105: '++' needs l-valuearr = &a; //error C2106 : '=' : left operand must be l - value}
可以看到,arr是指向常量的指针常量;如上[注]中。
(3)指针变量:指针变量是用来存放地址的变量。我们常说的指针是指针变量的简称。
定义:
int *p;char *p;int **p;char **p;//等等
二、指针
指针即指针变量
以下是指针的一些概念:
(1)指针的类型。
(2)指针所指向的类型。
(3)指针的值(指针所指向的内存区)。
(4)指针本身所占内存。
int*p; char*p; int**p; int(*p)[3]; int*(*p)[4];以上是几个实例
指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。
int*p; //指针类型:int*;char*p; //指针类型:char*; int**p; //指针类型:int**; int(*p)[3]; //指针类型:int(*)[3];int*(*p)[4]; //指针类型:int*(*)[4];
指针指向的类型
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型
int*p; //指针指向的类型:int;char*p; //指针指向的类型:char; int**p; //指针指向的类型:int*; int(*p)[3]; //指针指向的类型:int()[3];int*(*p)[4]; //指针指向的类型:int*()[4];
指针的值--或者叫指针所指向的内存区或地址
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。
指针本身所占据的内存区
指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32位平台里,指针本身占据了4个字节的长度。
0 0
- C语言指针学习(-)
- 学习C语言指针
- C语言指针学习
- C语言指针学习
- c语言指针学习
- c 语言指针学习
- C语言指针学习
- C语言指针学习
- C语言指针学习
- C语言学习-指针
- c语言 指针学习
- C语言学习-指针
- C语言学习笔记(十)--指针
- c语言学习第三天(指针)
- C语言学习笔记(五)指针
- C语言学习(六)指针2 数组与指针
- C语言学习(六)指针3 字符串与指针
- c语言指针学习笔记
- hdu 1248 寒冰王座
- Linux 安装配置 Apache
- ZOJ 2112 Dynamic Rankings(主席树套树状数组+静态主席树)
- 安卓基础开发-短信发送器
- 微信公众平台开发【发送消息】被动回复消息
- C语言指针学习(-)
- Nim博弈变形(anti-nim)
- android下设备权限为777却无法访问的问题
- C语言 大数相加与大数相减
- Memcached
- win 7 64位系统下 opencv2.4.9+vs2012的环境配置以及x64的运行
- CPU绑定技术
- 进程间通信-信号详解
- Java IO流 字符常用流:BufferedWriter详细解释