c++ 变量常量指针练习题
Q1:在win32 x86模式下,int *p; int **pp; double *q; 请说明p、pp、q各占几个字节的内存单元。
p 占 4 个字节
pp 占 4 个字节
q 占 4 个字节
Q2常量1、1.0、“1”的数据类型是什么?
1 是 整形 int
1.0 是 浮点型 double
“1” 是 const char *
Q3 语句:short int a[10]; short int *p = a; sizeof(a)等于sizeof§吗?为什么?
不一样, sizeof(a) 计算的是开辟的数组的空间大小 ,为 20 字节
而sizeof§ 计算的是short 类型的指针 p 本身的占用的空间的大小,为 4 个字节
Q4
若给出声明:
char c, *pc;
const char cc = 'a';
const char *pcc;
char *const cpc = &c;
const char * const cpcc = &cc;
char *const *pcpc;
则下面的赋值哪些是合法的?哪些是非法的?为什么?
(1) c = cc; (10) *pc = "ABCD"[2];
(2) cc = c; (11) cc = 'a';
(3) pcc = &c; (12) *cpc = *pc;
(4) pcc = &cc; (13) pc = *pcpc;
(5) pc = &c; (14) **pcpc = *pc;
(6) pc = &cc; (15) *pc = **pcpc;
(7) pc = pcc; (16) *pcc = 'b';
(8) pc = cpcc; (17) *pcpc = 'c';
(9) cpc = pc; (18) *cpcc = 'd';
(1) 合法 , c 不是 const 类型的变量 ,可以赋值
(2) 非法 , cc 是 const 类型的变量,不可以赋值
(3) 合法 , pcc 是一个常量指针,可以更改指向的对象
(4) 合法, pcc 是一个常量指针,可以更改指向的对象
(5) 合法 , 类型匹配
(6) 非法 , pc 是一个 char 类型的 指针, 而 cc 是常量,类型不匹配
(7) **非法 **, 类型不匹配,pc要求指向char类型的变量,不能用指向const char*类型的pcc赋值。
(8) 非法 , 类型不匹配,pc要求指向char类型的变量,不能用指向const char*类型的cpcc赋值。
(9) **非法 **, cpc 是一个指针常量,无法修改指针的指向
(10)合法 , pc指向的是非const类型的变量,可以赋值,等价于*pc=’C’
(11) 非法 , 常量 cc 无法被重新赋值
(12) 合法 , 指针常量 可以 为所指向的对象重新赋值
(13) 合法 ,pc是非const类型的指针变量,可以用char 类型的值pcpc赋值
(14) 合法 , pc是非const类型的指针变量,可以用char 类型的值pcpc赋值
(15) **合法 ** ,*pc代表的是非const类型的字符变量,可以任何字符类型的值赋值。
(16) 非法 , *pcc代表的字符是const类型的字符变量,不能赋值。
(17) 非法 , *pcpc代表的是const类型的指针变量,不能赋值。
(18) 非法 , *cpcc代表的是const类型的只读变量,不能赋值。
Q5
C按优先级和结合性解释类型,下述声明是什么意思?
(1) typedef void VF_PC_RI(char*, int &);
(2) typedef VF_PC_RI* P_VF_PC_RI;
(3) typedef int &RIFFII(int, int);
(4) extern VF_PC_RI funca;
(5) extern P_VF_PC_RI ptra;
(6) extern void func1 (P_VF_PC_RI *);
(7) extern P_VF_PC_RI func2 (int c);
(8) P_VF_PC_RI func3 (P_VF_PC_RI a);
(9) typedef void (*(**VF_PA_P_PF_V(void))[ ]) (const int);
(10) int *(*p)[4][2];
(1) 定义了一个名为
VF_PC_RI
的函数类型,该函数接受一个char*
类型的参数和一个int
引用作为参数,而且这个函数没有返回值(2) 定义了一个 名为P_VF_PC_RI的类型,该类型定义了一个指向VF_PC_RI类型的指针。
(3) 定义了一个名叫 RIFFII 的类型, 该类型定义了一个参数为(int , int ),返回值 为 int 类型的引用的一个函数
(4) 声明了一个名为
funca
的函数(5) 声明了一个类型为P_VF_PC_RI的指针变量ptra
(6) 声明了一个名为
func1
的函数,该函数接受一个指向P_VF_PC_RI
类型指针的参数,返回值 为void(7) 声明了一个名为
func2
的函数,该函数接受一个int
参数并返回一个指向VF_PC_RI
类型函数的指针(8) 声明了一个名为
func3
的函数,该函数接受一个P_VF_PC_RI
类型的参数并返回一个P_VF_PC_RI
类型的值(9) 定义了一个名为
VF_PA_P_PF_V
的函数,该函数不接受参数并返回一个指向指针数组的指针,其中指针数组的元素是指向函数的指针,这些函数接受一个const int
参数并返回void
。(10) 定义了一个p 的指针,这个指针指向 4 个元素的数组,每个数组包含2个元素,这两个元素的值都是 int *
Q6
下面g()函数的重载声明和定义是否会导致编译错误?
float g(int);
int g(int);
int g(int, int y=3);
int g(int, …);
int i = g(8);
会导致编译错误
- 不能以返回值的不同作为重载的条件 float g(int) 和 int g(int) 冲突
- g(8) 在调用的时候出现二义性,无法确定是调用int g(int, int y=3)还是int g(int, L)
**Q7 **定义函数求n(n>=1)个double类型的数的最大值double max1(int n, …)。注意:如果编程测试,建议使用vs2019 ,并且一定要在x86模式(不要在x64)。有兴趣的同学,可以在vs2019-x64下测试,分析为什么得不到正确的结果。
double maxl(int n,...)
{double* p = (double*)(&n + 1);double max = p[0];for (int k = 1; k < n; k++){if (max < p[k]){max = p[k];}}return max;
}
用 x64 模式下代码能够运行但是得不到正确的结果,x86 是 64 位,会给每个变量分配 8 个字节,若 n 的地址 为 0x 0000 ,则 下一个 double 的 首地址为 0x 0008 , 但是 double* p = (double*)(&n + 1) 这句话 的意思是 p 的取值到 n 的地址 + sizeof(int) ,就是取值到 0x 0004 ,不能正确取值到 double 的地址,如果 改为 double* * p = (double*)(&n + 2) ,就能正确取值到 0x0008 ,或者 p = (double *)((char *)&n + 8) ,这个等价于 对 n 的地址增加 8 个 字节,也可以取值取到 0x0008
下面的代码都是可以的
double* p = (double*)((char*)&n + 8);double* p = (double*)((short *)&n + 4);double* p = (double*)((int*)&n + 2);double* p = (double*)((double*)&n + 1);
相关文章:
c++ 变量常量指针练习题
Q1:在win32 x86模式下,int *p; int **pp; double *q; 请说明p、pp、q各占几个字节的内存单元。 p 占 4 个字节 pp 占 4 个字节 q 占 4 个字节 Q2常量1、1.0、“1”的数据类型是什么? 1 是 整形 int 1.0 是 浮点型 double “1” 是 const char * Q3 语句&…...

Linux底层基础知识
一.汇编,C语言,C,JAVA之间的关系 汇编,C语言,C可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C,…...

JUC并发编程--------线程安全篇
目录 什么是线程安全性问题? 如何实现线程安全? 1、线程封闭 2、无状态的类 3、让类不可变 4、加锁和CAS 并发环境下的线程安全问题有哪些? 1、死锁 2、活锁 3、线程饥饿 什么是线程安全性问题? 我们可以这么理解&#…...

机器视觉之Basler工业相机使用和配置方法(C++)
basler工业相机做双目视觉用,出现很多问题记录一下: 首先是多看手册:https://zh.docs.baslerweb.com/software 手册内有所有的源码和参考示例,实际上在使用过程中,大部分都是这些源码,具体项目选择对应的…...

Centos nginx配置文档
1、安装nginx: yum install nginx 2、Nginx常用命令 查看版本:nginx -v 启动:nginx -c /etc/nginx/nginx.conf 重新加载配置:nginx -s reload 停止:nginx -s stop 3、Nginx反向代理配置 nginx配置详解 1、Nginx配置图 详情可以查看:http://nginx.org/ru/docs/example…...

2023/9/14 -- C++/QT
作业: 仿照Vector实现MyVector,最主要实现二倍扩容 #include <iostream>using namespace std;template <typename T> class MyVector { private:T *data;size_t size;size_t V_capacity; public://无参构造MyVector():data(nullptr),size(…...
golang在goland编译时获取环境变量失效
在golang中, 我们通常使用os包来获取环境变量,如: os.Getenv() os.LookupEnv() 等。 但如果我们使用goland编译器,在编译是,这时操作环境变量,会发现os包读取到的环境变量值不变: 新增后&am…...

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了
一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了。 在互联网数据大爆炸的这几年,各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的…...

蓝桥杯 题库 简单 每日十题 day3
01 约数个数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 1200000 有多少个约数(只计算正约数)。 解题思路 枚举,从1开始一直到1200000本身都作为1200000的除数,…...

基于SSM+Vue的高校实验室管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

C语言天花板——指针(初阶)
🌠🌠🌠 大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇 一、什么是指针&…...

关于第一届全球电子纸创新应用金奖征集评选及报名指南
重要通知 |关于第一届全球电子纸创新应用金奖征集评选及报名指南https://mp.weixin.qq.com/s/RWsZtmJ20-NZXMG0k0rwPA?wxwork_useridEPIA 从2004年,Sony推出全球首款电纸书阅读器至今20载,这期间,到底诞生了多少种创新产品&#…...
idea搭建项目找不到Tomcat
idea搭建项目找不到Tomcat_idea没有tomcat配置项_ZYRL的博客-CSDN博客...

类和对象三大特性之继承
全文目录 继承的概念定义格式继承关系和访问限定符final 基类和派生类对象赋值转换继承中的作用域派生类的六个默认成员函数构造函数拷贝构造函数operator析构函数 友元和静态成员友元静态成员 各种继承形式菱形继承虚继承菱形虚拟继承对象模型 继承和组合 继承的概念 通过继承…...

Debian 12安装Docker
1.更新系统包 #apt update 2.安装依赖包 #apt install apt-transport-https ca-certificates curl gnupg lsb-release 3.添加Docker源 (1)添加Docker 官方GPG密钥 #curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/s…...

小谈设计模式(4)—单一职责原则
小谈设计模式(4)—单一职责原则 专栏介绍专栏地址专栏介绍 单一职责原则核心思想职责的划分单一变化原则高内聚性低耦合性核心总结 举例图书类(Book)用户类(User)图书管理类(Library)…...

ATF(TF-A) EL3 SPMC威胁模型-安全检测与评估
安全之安全(security)博客目录导读 ATF(TF-A) 威胁模型汇总 目录 一、简介 二、评估目标 1、数据流图 三、威胁分析 1、信任边界 2、资产 3、威胁代理 4、威胁类型 5、威胁评估 5.1 端点在直接请求/响应调用中模拟发送方FF-A ID 5.2 端点在直接请求/响应调用中模拟…...

AI绘画Stable Diffusion原理之扩散模型DDPM
前言 传送门: stable diffusion:Git|论文 stable-diffusion-webui:Git Google Colab Notebook部署stable-diffusion-webui:Git kaggle Notebook部署stable-diffusion-webui:Git AI绘画,输入一段…...

NSS [西湖论剑 2022]real_ez_node
NSS [西湖论剑 2022]real_ez_node 考点:ejs原型链污染、NodeJS 中 Unicode 字符损坏导致的 HTTP 拆分攻击。 开题。 附件start.sh。flag位置在根目录下/flag.txt app.js(这个没多大用) var createError require(http-errors); var express require(express); v…...

MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、字符…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...