【C和指针】6.指针
2024-09-18 23:03:47
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
最新文章
- java web学习总结(二十三) -------------------编写自己的JDBC框架
- Hadoop中MR程序的几种提交运行模式
- PHP递归生成树形数组
- linux系统修改CST时区
- Java Memory Basic
- xargs rm -rf 与 -exec rm
- GC选择之CMS 并发标记清除
- SQL Server 查询性能优化——创建索引原则(一)(转载)
- iPhone6 AirDrop找不到我的mac解决方法!注销mac和iPhone的icloud账号
- 我们距离AI编程还有多远?
- 一篇年薪60万的JVM性能调优文章
- web中spring框架启动流程第一发
- String字符串的常用方法
- git获取远程服务器的指定分支
- 【Linux基础】crontab定时命令详解
- Linux(Centos)下调整分区大小(以home和根分区为例)
- What's the Python Launcher?
- C# 监控代码执行效率
- 最新Windows下c++读写锁SRWLock介绍
- ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
热门文章
- 3D场景建模
- 轻量级CI/CD发布部署环境搭建及使用_04_docker安装nexus3
- python中的字符串的常用方法介绍
- LeetCode-1705 吃苹果的最大数目
- 一键接入 ChatGPT,让你的QQ群变得热闹起来
- 银河麒麟服务器V10-SP2安装tomcat
- 运行Java时报错:Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'
- Day 24 24.1:逆向分析1 - Steam案例
- Codeforces Round #748 (Div. 3) - D2. Half of Same
- Windows.h 文件学习