C语言char**,char*,char s[]赋值
目录
前言
赋值方法
char s[]:
char*
char**
问题
修改字符串常量
前言
char**,char*,char s[]赋值的方式是不同的,当你搞混的时候,系统会报出段错误(Segmentation Fault),所以有必要做一个总结。
赋值方法
char s[]:
char s[ ], char s[ ][ ]可以直接用字符串赋值,或单个单个的赋值,如:
char a[3][8]={"okkmoo","iju44"};char b[8]={"iikkkk"};char c[8]="iikkk";char d[8];for(int i=0;i<7;i++){d[i]=48+i;a[2][i]=48+i;}
错误赋值方法:
char a[3][8]={"okkmoo","iju44"};a[2]="8987";//错误char d[8]="op";d="helloc";//错误
上述代码中的a[ 2 ],d 是不可改变的,如果想要赋值,可以单个单个元素赋值。
char*
char* 是字符串常量,或者是指针,可以直接赋值为字符串,或者让指针指向某个字符或字符数组har s[]。如:
char b[8]={"iikkkk"};char*p="c";//后面自动跟一个空字符char*q=b;
注意,字符串常量不可以改变,但可以让char* 重新指向另一个字符串常量:
char*p="c899555";p[0]='5';//错误p="plm";//正确
char**
首先,需要创建一个char**类型的指针变量。然后,为指针变量分配内存,使其能够存储char*类型的指针。最后,将char*类型的指针数组的元素逐个赋值给char**类型的指针。
下面是一个示例代码,演示了如何将char*类型的指针数组赋值给char**类型的指针:
#include <stdio.h>void printArray(char** arr, int size)
{for (int i = 0; i < size; i++){printf("%s\n", arr[i]);}
}int main()
{char* strings[] = {"Hello", "World", "Example"};int size = sizeof(strings) / sizeof(strings[0]);char** s = (char**)malloc(size * sizeof(char*));if (s == NULL){printf("Memory allocation failed\n");return 1;}for (int i = 0; i < size; i++){s[i] = strings[i];}printArray(s, size);free(s);return 0;
}
下面这行代码是错误的,尝试将字符串字面量赋值给char**类型的指针t。然而,字符串字面量是不能直接赋值给指针的。
char** t = {"53..7....","6..195..."}
可以改为:
char** t = (char**)malloc(2 * sizeof(char*));
t[0] = strdup("53..7....");
t[1] = strdup("6..195...");
问题
修改字符串常量
#include <stdio.h>
#include<string.h>void fun(char*s);int main()
{char*s="okkmoo";fun(s);printf("%s",s);return 0;
}void fun(char*s)
{s[0]='1'; //错误
}
在代码中,出现错误的地方是尝试修改一个字符串常量,这是不允许的。字符串常量是不可修改的。
在main函数中,你定义了一个指向字符串常量的指针s,然后将它作为参数传递给fun函数。在fun函数内部,你尝试将s的第一个字符修改为'1',这违反了字符串常量的不可修改性。
为了修复这个问题,你可以将s声明为一个字符数组而不是字符串常量。
int main()
{char s[] = "okkmoo"; // 将s声明为字符数组fun(s);printf("%s", s);return 0;
}
char *s[ ]="123456",与上述一样,不可以改变。可以改声明为char s[ ][ ]。
相关文章:
C语言char**,char*,char s[]赋值
目录 前言 赋值方法 char s[]: char* char** 问题 修改字符串常量 前言 char**,char*,char s[]赋值的方式是不同的,当你搞混的时候,系统会报出段错误(Segmentation Fault),所…...
一、Kubernetes介绍与集群架构
Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。…...
基于C#UI Automation自动化测试
步骤 UI Automation 只适用于,标准的win32和 WPF程序 需要添加对UIAutomationClient、 UIAutomationProvider、 UIAutomationTypes的引用 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D…...
深入了解Linux运维的重要性与最佳实践
Linux作为开源操作系统的代表,在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面,Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践,帮助读者更好地了解和掌握Linux系统的运维技巧。 首先…...
90 | Python人工智能篇 —— 深度学习算法 Keras基于卷积神经网络的情感分类
情感分类是自然语言处理(NLP)领域的一个重要任务,它旨在将文本划分为积极、消极或中性等不同情感类别。深度学习技术,尤其是卷积神经网络(CNN),在情感分类任务中取得了显著的成果。Keras作为一个高级的深度学习框架,提供了便捷易用的工具来构建和训练情感分类模型。 文…...
自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅲ]
分类目录:《自然语言处理从入门到应用》总目录 对话令牌缓冲存储器ConversationTokenBufferMemory ConversationTokenBufferMemory在内存中保留了最近的一些对话交互,并使用标记长度来确定何时刷新交互,而不是交互数量。 from langchain.me…...
【ARM 嵌入式 编译系列 10.3 -- GNU elfutils 工具小结】
文章目录 什么是 GNU elfutils?GNU elfutils 常用工具有哪些?objcopy 常用参数有哪些?GNU binutils和GNU elfutils区别是什么? 上篇文章:ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解 什么是 GNU elfu…...
黑马项目一阶段面试 项目介绍篇
我完成了一个外卖项目,名叫苍穹外卖,是跟着黑马程序员的课程来自己动手写的。 项目基本实现了外卖客户端、商家端的后端完整业务。 商家端分为员工管理、文件上传、菜品管理、分类管理、套餐管理、店铺营业状态、订单下单派送等的管理、数据统计等&…...
重构内置类Function原型上的call方法
重构内置类Function原型上的call方法 // > 重构内置类Function原型上的call方法 ~(function () {/*** call: 改变函数中的this指向* params* context 可以不传递,传递必须是引用类型的值,因为后面要给它加 fn 属性**/function myCall(context) {/…...
Nginx之lnmp架构
目录 一.什么是LNMP二.LNMP环境搭建1.Nginx的搭建2.安装php3.安装数据库4.测试Nginx与PHP的连接5.测试PHP连接数据库 一.什么是LNMP LNMP是一套技术的组合,Llinux,Nnginx,Mmysql,Pphp 首先Nginx服务是不能处理动态资源请求&…...
C# 使用FFmpeg.Autogen对byte[]进行编解码
C# 使用FFmpeg.Autogen对byte[]进行编解码,参考:https://github.com/vanjoge/CSharpVideoDemo 入口调用类: using System; using System.IO; using System.Drawing; using System.Runtime.InteropServices; using FFmpeg.AutoGen;namespace F…...
websocket是多线程的嘛
经过测试, onOpen事件的threadId和onMessage的threadId是不一样的,但是onMessage的threadId一直是同一个,就是说收消息的部分是单线程的,收到第一个Message后如果给它sleep较长时间,期间收到第二个,效果是它在排队&am…...
CentOS7.9 禁用22端口,使用其他端口替代
文章目录 业务场景操作步骤修改sshd配置文件修改SELinux开放给ssh使用的端口修改防火墙,开放新端口重启sshd生效 相关知识点介绍sshd服务SELinux服务firewall.service服务 业务场景 我们在某市实施交通信控平台项目,我们申请了一台服务器,用…...
2023国赛 高教社杯数学建模ABCDE题思路汇总分析
文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...
【网络层+数据链路层】深入理解IP协议和MAC帧协议的基本原理
文章目录 前言一、IP协议二、MAC帧协议 1.以太网2.以太网帧(MAC帧)格式报头3.基于协议讲解局域网转发的原理总结 前言 为什么经常将TCP/IP放在一起呢?这是因为IP层的核心工作就是通过IP地址来定位主机的,具有将一个数据报从A主机…...
银行家算法【学习算法】
银行家算法【学习算法】 前言版权推荐银行家算法7.避免死锁7.1 系统安全状态7.2 利用银行家算法避免死锁 Java算法实现代码结果 最后 前言 2023-8-14 18:18:01 以下内容源自《【学习算法】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台…...
萤石直播以及回放的接入和销毁
以下基于vue项目 1.安装 npm i ezuikit-js 2、导入 main.js中 import EZUIKit from "ezuikit-js"; //导入萤石Vue.use(EZUIKit); 3、创建容器 <div class"video"><div id"video-container"></div><!-- <iframe :src…...
C语言易错知识点总结2
函数 第 1 题(单选题) 题目名称: 能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( ) 题目内容: A .return 这二个数 B .形参用数组 C .形参用二个指针 D .用…...
Go学习-Day1
Go学习-Day1 个人博客:CSDN博客 打卡。 Go语言的核心开发团队: Ken Thompson (C语言,B语言,Unix的发明者,牛人)Rob Pike(UTF-8发明人)Robert Griesemer(协助HotSpot编译器,Js引擎V8) Go语言有静态语言的…...
冠达管理:机构密集调研医药生物股 反腐政策影响受关注
进入8月,跟着反腐事件发酵,医药生物板块呈现震荡。与此一起,组织出资者对该板块上市公司也展开了密集调研。 到昨日,8月以来就有包含南微医学、百济神州、维力医疗、方盛制药等12家医药生物板块的上市公司接受组织调研,…...
vLLM-v0.17.1环境快速部署:Windows系统下Python与CUDA配置详解
vLLM-v0.17.1环境快速部署:Windows系统下Python与CUDA配置详解 1. 前言:为什么选择vLLM? 如果你正在Windows系统上探索大语言模型的高效推理方案,vLLM绝对值得关注。这个由加州大学伯克利分校团队开发的开源项目,以其…...
Phi-4-mini-reasoning企业级部署:Nginx反向代理+HTTPS安全访问配置教程
Phi-4-mini-reasoning企业级部署:Nginx反向代理HTTPS安全访问配置教程 1. 项目介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型主打"小参数、强推理、长上下文、低延迟…...
避开这3个坑!用SPSS做描述性统计时90%新手会犯的错误(附正确操作截图)
避开这3个坑!用SPSS做描述性统计时90%新手会犯的错误(附正确操作截图) 第一次打开SPSS时,那个布满英文按钮的界面就让我头皮发麻。记得研究生时期帮导师处理调研数据,我自信满满地导入了500份问卷,结果在组…...
C++内存管理 C++模板
个人主页:小则又沐风 个人专栏:<数据结构> <竞赛专栏> <C语言> <C> 目录 一 C的内存管理 1.C语言的内存管理 2.C的内存管理 3.new和delete的实现原理 4. C内存管…...
从雅可比矩阵到概率重塑:标准化流如何成为生成式模型的精确解?
1. 标准化流:生成式模型的精确解 想象你手里有一张白纸,上面画着一个标准圆形。现在你想把它变成一幅复杂的山水画,但又希望每一步修改都能精确追踪——这就是标准化流(Normalizing Flows)在概率分布世界做的事情。与其…...
告别环境冲突!VSCode里用IDF插件轻松管理多个ESP-IDF版本(5.3/4.4自由切换)
多版本ESP-IDF项目管理实战:VSCode高效工作流全解析 当你的工作台同时躺着基于ESP-IDF 5.3的智能家居网关和基于4.4版本的工业传感器项目时,每次切换都需要重新配置环境参数吗?作为经历过这种折磨的开发者,我想分享一套经过实战检…...
YOLOv12解决方案实战:智能安防、交通监控、工业检测三大场景应用
YOLOv12解决方案实战:智能安防、交通监控、工业检测三大场景应用 【免费下载链接】yolov12 [NeurIPS 2025] YOLOv12: Attention-Centric Real-Time Object Detectors 项目地址: https://gitcode.com/gh_mirrors/yo/yolov12 YOLOv12作为NeurIPS 2025最新发布的…...
从‘抓不住’到‘抓得稳’:手把手教你用Gazebo Grasp_fix插件搞定Robotiq夹爪仿真(含物体建模技巧)
从‘抓不住’到‘抓得稳’:Gazebo Grasp_fix插件与Robotiq夹爪仿真实战指南 在机器人仿真领域,Gazebo作为一款强大的物理仿真工具,为开发者提供了测试和验证机器人算法的虚拟环境。然而,当涉及到机械臂抓取任务时,许多…...
嵌入式裸机开发中的轻量级定时调度方案
1. SmartTimer:裸机环境下的轻量级定时调度方案在嵌入式开发中,定时任务管理是个永恒的话题。我最近在做一个空气质量监测项目时,发现传统的裸机编程方式在处理多个定时任务时显得力不从心。硬件定时器资源有限,软件标志位管理又容…...
【医疗信息化开发者必修课】:C# FHIR SDK实战指南——从零构建符合HL7 FHIR R4规范的患者数据服务
第一章:FHIR标准与医疗信息化开发全景概览 FHIR(Fast Healthcare Interoperability Resources)是由HL7组织制定的现代医疗数据交换标准,旨在通过RESTful API、结构化资源和开放格式(如JSON/XML)弥合异构医疗…...
