【C和指针】6.指针
1.指针变量的内容
int a=112, b=-1;
float c=3.14;
int *d=&a;
int *e=&c;
(1) 变量d和e被声明为指针,并用其他变量的地址予以初始化;
(2) 指针变量d和e的初始化用&操作符完成,该操作符用于产生操作数的内存地址;
2.间接访问操作符或解引用指针*
(1) 对指针进行解引用操作可以获得它所指向的值;
*d=112
*e=3.14
3.未初始化和非法的指针
int *a;
...
*a=12;
(1) 上述代码中声明了一个指针变量a,然后把12存储到a所指向的内存位置;
(2) 但是,上述代码是错误的; 因为声明了指针变量a后,从未对a进行初始化,所以a指向哪里不确定,也就没办法预测12这个值将存储于什么地方;
4.NULL指针
(1) NULL指针,作为一个特殊的指针变量,表示不指向任何东西;要使一个指针变量为NULL,可以给它赋一个零值; 为了测试一个指针变量是否为NULL,可以将其与0进行比较;
(2) 对NULL指针进行解引用操作是非法的; 在对指针进行解引用操作之前,首先必须确保它并非NULL指针;
5.指针,间接访问,左值
int a;
int *d=&a; *d=10-*d; //正确
d=10-*d; //错误
(1) *d=10-*d中,d所指向的位置a把赋值符右侧的表达式的计算结果作为它的新值;
(2) d=10-*d,非法,把一个整型数量10-*d存储于一个指针变量中;
6.指针,间接访问,变量
*&a=25;
(1) &a产生变量a的地址,*&a取变量a的地址所存储的数值,所以*&a=25等价于a=25;
7.指针的指针
int a=12;
int *b=&a;
int **c=&b; 表达式 等价的表达式
a 12
b &a
*b 12,a
c &b
*c b, &a
**c *b,12,a
【C和指针】6.指针的更多相关文章
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- C/C++:提升_指针的指针和指针的引用
C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.
- 理清C++常量指针和指针常量这团乱麻
写在前面: 与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头.其实本来没什么,这无非是const int *p与int* const p的区别, 但一涉及到起名字 ...
- 详解c++指针的指针和指针的引用
展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它.(这里说的指针的指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方 ...
- 指针的指针&指向指针数组的指针
一.指针的指针 指针的指针看上去有些令人费解.它们的声明有两个星号.例如: char ** cp; 如果有三个星号,那就是指针的指针的指针,四个星号就是指针的指针的指针的指针 ...
- C语言 详解多级指针与指针类型的关系
//V推论①:指针变量的步长只与‘指针变量的值’的类型有关(指针的值的类型 == 指针指向数据的类型) //指针类型跟指针的值有关,指针是占据4个字节大小的内存空间,但是指针的类型却是各不相同的 // ...
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
#include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...
- C++ 必知必会:条款15 成员的指针并非指针
指向类成员的类成员的指针说是“指针”,其实是不合适的,因为他既不包含地址,其行为也不像指针 常规的指正,包含地址,对其解应用可以得到该指针包含地址所指向的对象 1: int a = 12: 2: in ...
- o4.数组指针和指针数组的区别
------- android培训.iOS培训.期待与您交流! ---------- 我们看一下数组指针和指针数组: 数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个 ...
- 不可不表的OSG智能指针之强指针与弱指针 《转载》
不可不表的OSG智能指针之强指针与弱指针 <转载> 使用OSG的人都知道OSG的内存管理方式采用了智能指针,通过智能指针的方式让OSG自己处理对象的销毁工作.在OSG中有两个智能指针类型, ...
随机推荐
- 推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
1.前言:召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重 ...
- 触觉仿真系统:Force Dimension+CHAI 3D
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 Force Dimension 成立于2001年,总部在瑞士,比sensable 晚了8年,开发的理念也不一样,他们开发是连杆式力反馈触觉系统,仿 ...
- redis(13)持久化操作-AOF
AOF(Append Only File) 以日志的形式来记录每个写操作(增量保存),将 Redis 执行过的所有写指令记录下来 (读操作不记录), 只许追加文件但不可以改写文件,redis 启动之初 ...
- Java学习笔记(二)java流程控制
学习笔记2 Java流程控制 这次也是跟着[狂神说Java]Java零基础学习视频通俗易懂继续学习的,持续学习,你我共勉. 一. 用户交互Scanner 1. Scanner对象 之前学的基本语法没有 ...
- RestTemplate 请求
@Autowired private RestTemplate httpRestTemplate; String code= request.getParameter("code" ...
- Mysql数据库基础第七章:流程控制结构
Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...
- Nginx--logrotate日志切割打包
1.系统是默认安装的,查看系统是否安装logrotate centos rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf ...
- linux下启动jar包
一.jdk 1.安装jdk 2.查看 摘自:(29条消息) Linux如何查看JDK的安装路径_fanyuna的博客-CSDN博客_linux查看jdk安装位置 1:echo $JAVA_HOME 使 ...
- Bugku-不可破译的密码[wp]
一 题目分析 flag.txt cipher.txt (1)密码表形式和维吉尼亚密码一样 (2)看到504Q0304 很容易想到 504B0304 Zip文件头. 二 解题步骤 2.1 解密密文 根据 ...
- winform 更新下载压缩文件解压并覆盖
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...