c/c++ 指针数组

        顾名思义就是元素为指针的数组,如定义一个 char *类型的指针数组:

 char *strName[] = {"123","456","789","abc","def"
};

如果是这样初始化的指针数组,c++编译是会抛出警告信息的:

因为用了字符串常量进行初始化,所以是不可被修改的,所以定义时需要加上 const:

#include <stdio.h>
#include <stdlib.h>char *strName[] = {"123","456","789","abc","def"
};int main()
{printf("strName[1] = %s\n", strName[1]);printf("*strName = %s\n", *strName);printf("*strName+1 = %s\n", *strName+1);printf("sizeof strName[2] = %lu\n", sizeof(strName[2]));return 0;
}

*strName 是解引用,所以输出是 “123” ,而 *strName + 1 为什么输出是 “23” 呢?因为在 *strName 解引用后它的类型是 char*,+1 后即挪动一个 char 长度,指向了“123”中的“2”位置,其实它跟 “123” + 1 的效果是一样的:
 

#include <stdio.h>
#include <stdlib.h>const char *strName[] = {"123","456","789","abc","def"
};int main()
{printf("strName[1] = %s\n", strName[1]);printf("*strName = %s\n", *strName);printf("*strName+1 = %s\n", *strName+1);printf("\"123\"+1 = %s\n", "123"+1);printf("sizeof strName[2] = %lu\n", sizeof(strName[2]));return 0;
}

如果不用字符串常量初始化,也是可以手动申请内存的,但定义是就不能用const了,如:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>char *strName[3];
int main()
{char buf[16];for(int i = 0; i < 3; i++){strName[i] = new char[16];snprintf(buf, sizeof(buf), "test_%d", i * 10);strncpy(strName[i], buf, 15);}printf("strName[1] = %s\n", strName[1]);printf("*strName = %s\n", *strName);printf("*strName+1 = %s\n", *strName+1);printf("sizeof strName[2] = %lu\n", sizeof(strName[2]));for(int i = 0; i < 3; i++){if(strName[i]){delete strName[i];}}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418095.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2+ueditor集成秀米编辑器

一、百度富文本编辑器 1.首先下载 百度富文本编辑器 下载地址&#xff1a;GitHub - fex-team/ueditor: rich text 富文本编辑器 2.把下载好的文件整理好 放在图片目录下 3. 安装插件vue-ueditor-wrap npm install vue-ueditor-wrap 4.在你所需要展示的页面 引入vue-uedito…

设计模式-单例模式工厂模式

3.1 单例模式 1.概念 用类来实现单例。由于某种需要&#xff0c;要保证一个类在程序的生命周期中只有一个实例&#xff0c;并且提供该实例的全局访问方法。 2.结构三要素 1)私有的静态对象属性private static instance&#xff0c;它的类型就是当前类的对象&#xff0c;静态…

EMC技术

目录 EMC 天线效应 公式 措施 EMC测试 展频技术 如何展频 OTA测试 EMC 三大要素&#xff1a;干扰源、传输介质、敏感设备。 EMI&#xff1a;Electromagnetic Interference&#xff0c;电磁干扰。 EMS&#xff1a;Electro Magnetic Susceptibility&#xff0c;电磁抗扰…

Centos7安装RabbitMQ

文章目录 Centos7安装RabbitMQ第一步、安装任何软件包之前&#xff0c;建议使用以下命令更新软件包和存储库第二步、Erlang在默认的YUM存储库中不可用&#xff0c;因此您将需要安装EPEL存储库第三步、RabbitMQ是基于Erlang&#xff08;面向高并发的语言&#xff09;语言开发&am…

语音测试(一)ffmpeg视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav命令说明 ffmpeg -i input.mp4 output.mkv FFmpeg 可能会尝试自动选择合适的编码器对视频和音频进行重新编码&#xff0c;以便适应 MKV 格式的要求ffmpeg -i input.mp4 -c c…

Python | Leetcode Python题解之第390题消除游戏

题目&#xff1a; 题解&#xff1a; class Solution:def lastRemaining(self, n: int) -> int:a1 1k, cnt, step 0, n, 1while cnt > 1:if k % 2 0: # 正向a1 stepelse: # 反向if cnt % 2:a1 stepk 1cnt >> 1step << 1return a1

心觉:如何用一颗心改变世界和自己

关于如何开发自己的潜意识开发的底层逻辑和注意事项 我这里就不赘述了&#xff0c;可以看我前面的文章 今天主要讲一下&#xff0c;如何让我们祈祷的作用发挥到极致 这里提到了祈祷&#xff0c;其实就是正念 把自己的梦想&#xff0c;目标&#xff0c;愿望通过积极的语言 …

数据预处理与协同过滤推荐算法——从数据清洗到个性化电影推荐

推荐系统在现代应用中占据了重要地位&#xff0c;尤其在电影、音乐等个性化内容推荐中广泛使用。本文将介绍如何使用数据预处理、特征工程以及多种推荐算法&#xff08;包括协同过滤、基于内容的推荐、混合推荐等&#xff09;来实现电影推荐系统。通过Pandas、Scikit-learn、Te…

探索PDF的奥秘:pdfrw库的神奇之旅

文章目录 探索PDF的奥秘&#xff1a;pdfrw库的神奇之旅背景&#xff1a;为何选择pdfrw&#xff1f;pdfrw是什么&#xff1f;如何安装pdfrw&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;pdfrw在实际工作中的应用常见问题与解决方案总结 探索PDF的奥秘&#xff1a;p…

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…

C语言程序设计 笔记代码梳理 重制版

前言 第1章 C语言的流程 1.C程序经历的六个阶段 编辑(Edit)预处理(Preprocess)编译(Compile)汇编(Assemble)链接(Link)执行(Execute) 2.C语言编写代码到运行 都是先编译&#xff0c;后链接&#xff0c;最后运行。&#xff08;.c ---> .obj --->.exe&#xff09;这个过…

RockyLinux8.9上yum安装redis6

我百思不得其解的一个问题 我想在RockyLinux8.9上安装redis6&#xff0c;通过yum list | grep redis看到的redis版本只有redis5 appstream-official仓库是我新加的&#xff0c;这里先不管 于是我通过浏览器访问appstream仓库https://dl.rockylinux.org/vault/rocky/8.9/AppSt…

【个人笔记】VCS工具与命令

Title&#xff1a;VCS工具学习 一 介绍 是什么&#xff1f; VCS (Verilog Compiler Simulator) 是synopsys的verilog 仿真软件&#xff0c;竞品有Mentor公司的Modelsim、Cadence公司的NC-Verilog、Verilog—XL. VCS能够 分析、编译 HDL的design code&#xff0c;同时内置了 仿…

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用&#xff0c;旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法&#xff0c;该算法是深度学习领域中的先进目标检测模型&#xff0c;具备实时检测和多目标识别的…

HCIA--实验五:静态路由综合实验

静态路由综合实验 一、实验内容&#xff1a; 1.需求/目的&#xff1a; 在ensp模拟器中使用四个路由器&#xff0c;并且在路由器上创建loopback接口&#xff0c;相当于连接了一台主机&#xff0c;通过配置静态路由的方式实现全网通。 二、实验过程 1.道具&#xff1a; 4个…

ubuntu16.04下qt5.7.1添加对openssl的支持

文章目录 前言一、编译安装openssl二、编译qt5.7.1三、配置qtcreator开发环境四、demo 前言 最近工作中要求客户端和服务端通过ssl加密通信,其中客户端是qt编程,服务端是linux编程.我的开发环境是ubuntu16.04;运行环境是debian9.13,是基于gnu的linux操作系统,64位arm架构. 一…

Android 15 正式发布到 AOSP ,来了解下新特性和适配需求

其实在年初的时候就整理过《2024 &#xff0c;Android 15 预览版来了》 和《提前窥探 Android 15 的新功能与适配》的相关内容&#xff0c;而随着时间进度推进&#xff0c;近日谷歌也正式发布了 Android 15 的正式版&#xff0c;虽然没什么「大亮点」&#xff0c;但是作为开发者…

STM32

&#xff08;以下操作环境为Keil5和proteus8.9&#xff09; 八种输入输出模式及他们的工作模式 分析如下 总线&#xff1a;总线提供了数据在不同组件&#xff08;如处理器、内存、输入输出设备等&#xff09;之间传输的路径&#xff0c;使数据能够快速、准确地在系统内流动。 …

【卡码网C++基础课 18.开房门】

目录 题目描述与分析一、map的基本介绍二、map的使用三、代码编写四、范围for循环 题目描述与分析 题目描述&#xff1a; 假设你手里有一串钥匙&#xff0c;这串钥匙上每把钥匙都有一个编号&#xff0c;对应着一个房门的编号。现给你一个房门编号&#xff0c;你需要判断是否能…

mesh lab导入顶点

文章目录 ubuntu上暗转meshlab导入纯三维点 ubuntu上暗转meshlab 方式一&#xff1a; sudo apt-get install meshlab方式二&#xff1a; unbuntu 上自带的软件商店的ubuntu software里面搜索mesh lab安装即可 导入纯三维点 顶点坐标&#xff1a; -0.409576 0 -0.286788 169…