当前位置: 首页 > news >正文

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[]&#xff1a; char* char** 问题 修改字符串常量 前言 char**&#xff0c;char*&#xff0c;char s[]赋值的方式是不同的&#xff0c;当你搞混的时候&#xff0c;系统会报出段错误&#xff08;Segmentation Fault&#xff09;&#xff0c;所…...

一、Kubernetes介绍与集群架构

Kubernetes介绍与集群架构 一、认识容器编排工具 docker machine 主要用于准备docker host现已弃用建议使用docker desktop docker compose Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose&#xff0c;您可以使用 YAML 文件来配置应用程序的服务。…...

基于C#UI Automation自动化测试

步骤 UI Automation 只适用于&#xff0c;标准的win32和 WPF程序 需要添加对UIAutomationClient、 UIAutomationProvider、 UIAutomationTypes的引用 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D…...

深入了解Linux运维的重要性与最佳实践

Linux作为开源操作系统的代表&#xff0c;在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面&#xff0c;Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践&#xff0c;帮助读者更好地了解和掌握Linux系统的运维技巧。 首先&#xf…...

90 | Python人工智能篇 —— 深度学习算法 Keras基于卷积神经网络的情感分类

情感分类是自然语言处理(NLP)领域的一个重要任务,它旨在将文本划分为积极、消极或中性等不同情感类别。深度学习技术,尤其是卷积神经网络(CNN),在情感分类任务中取得了显著的成果。Keras作为一个高级的深度学习框架,提供了便捷易用的工具来构建和训练情感分类模型。 文…...

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅲ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 对话令牌缓冲存储器ConversationTokenBufferMemory ConversationTokenBufferMemory在内存中保留了最近的一些对话交互&#xff0c;并使用标记长度来确定何时刷新交互&#xff0c;而不是交互数量。 from langchain.me…...

【ARM 嵌入式 编译系列 10.3 -- GNU elfutils 工具小结】

文章目录 什么是 GNU elfutils&#xff1f;GNU elfutils 常用工具有哪些&#xff1f;objcopy 常用参数有哪些&#xff1f;GNU binutils和GNU elfutils区别是什么&#xff1f; 上篇文章&#xff1a;ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解 什么是 GNU elfu…...

黑马项目一阶段面试 项目介绍篇

我完成了一个外卖项目&#xff0c;名叫苍穹外卖&#xff0c;是跟着黑马程序员的课程来自己动手写的。 项目基本实现了外卖客户端、商家端的后端完整业务。 商家端分为员工管理、文件上传、菜品管理、分类管理、套餐管理、店铺营业状态、订单下单派送等的管理、数据统计等&…...

重构内置类Function原型上的call方法

重构内置类Function原型上的call方法 // > 重构内置类Function原型上的call方法 ~(function () {/*** call: 改变函数中的this指向* params* context 可以不传递&#xff0c;传递必须是引用类型的值&#xff0c;因为后面要给它加 fn 属性**/function myCall(context) {/…...

Nginx之lnmp架构

目录 一.什么是LNMP二.LNMP环境搭建1.Nginx的搭建2.安装php3.安装数据库4.测试Nginx与PHP的连接5.测试PHP连接数据库 一.什么是LNMP LNMP是一套技术的组合&#xff0c;Llinux&#xff0c;Nnginx&#xff0c;Mmysql&#xff0c;Pphp 首先Nginx服务是不能处理动态资源请求&…...

C# 使用FFmpeg.Autogen对byte[]进行编解码

C# 使用FFmpeg.Autogen对byte[]进行编解码&#xff0c;参考&#xff1a;https://github.com/vanjoge/CSharpVideoDemo 入口调用类&#xff1a; using System; using System.IO; using System.Drawing; using System.Runtime.InteropServices; using FFmpeg.AutoGen;namespace F…...

websocket是多线程的嘛

经过测试, onOpen事件的threadId和onMessage的threadId是不一样的&#xff0c;但是onMessage的threadId一直是同一个&#xff0c;就是说收消息的部分是单线程的&#xff0c;收到第一个Message后如果给它sleep较长时间&#xff0c;期间收到第二个&#xff0c;效果是它在排队&am…...

CentOS7.9 禁用22端口,使用其他端口替代

文章目录 业务场景操作步骤修改sshd配置文件修改SELinux开放给ssh使用的端口修改防火墙&#xff0c;开放新端口重启sshd生效 相关知识点介绍sshd服务SELinux服务firewall.service服务 业务场景 我们在某市实施交通信控平台项目&#xff0c;我们申请了一台服务器&#xff0c;用…...

2023国赛 高教社杯数学建模ABCDE题思路汇总分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

【网络层+数据链路层】深入理解IP协议和MAC帧协议的基本原理

文章目录 前言一、IP协议二、MAC帧协议 1.以太网2.以太网帧&#xff08;MAC帧&#xff09;格式报头3.基于协议讲解局域网转发的原理总结 前言 为什么经常将TCP/IP放在一起呢&#xff1f;这是因为IP层的核心工作就是通过IP地址来定位主机的&#xff0c;具有将一个数据报从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 题&#xff08;单选题&#xff09; 题目名称&#xff1a; 能把函数处理结果的二个数据返回给主调函数&#xff0c;在下面的方法中不正确的是&#xff1a;&#xff08; &#xff09; 题目内容&#xff1a; A .return 这二个数 B .形参用数组 C .形参用二个指针 D .用…...

Go学习-Day1

Go学习-Day1 个人博客&#xff1a;CSDN博客 打卡。 Go语言的核心开发团队&#xff1a; Ken Thompson (C语言&#xff0c;B语言&#xff0c;Unix的发明者&#xff0c;牛人)Rob Pike(UTF-8发明人)Robert Griesemer(协助HotSpot编译器&#xff0c;Js引擎V8) Go语言有静态语言的…...

冠达管理:机构密集调研医药生物股 反腐政策影响受关注

进入8月&#xff0c;跟着反腐事件发酵&#xff0c;医药生物板块呈现震荡。与此一起&#xff0c;组织出资者对该板块上市公司也展开了密集调研。 到昨日&#xff0c;8月以来就有包含南微医学、百济神州、维力医疗、方盛制药等12家医药生物板块的上市公司接受组织调研&#xff0c…...

vLLM-v0.17.1环境快速部署:Windows系统下Python与CUDA配置详解

vLLM-v0.17.1环境快速部署&#xff1a;Windows系统下Python与CUDA配置详解 1. 前言&#xff1a;为什么选择vLLM&#xff1f; 如果你正在Windows系统上探索大语言模型的高效推理方案&#xff0c;vLLM绝对值得关注。这个由加州大学伯克利分校团队开发的开源项目&#xff0c;以其…...

Phi-4-mini-reasoning企业级部署:Nginx反向代理+HTTPS安全访问配置教程

Phi-4-mini-reasoning企业级部署&#xff1a;Nginx反向代理HTTPS安全访问配置教程 1. 项目介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型主打"小参数、强推理、长上下文、低延迟…...

避开这3个坑!用SPSS做描述性统计时90%新手会犯的错误(附正确操作截图)

避开这3个坑&#xff01;用SPSS做描述性统计时90%新手会犯的错误&#xff08;附正确操作截图&#xff09; 第一次打开SPSS时&#xff0c;那个布满英文按钮的界面就让我头皮发麻。记得研究生时期帮导师处理调研数据&#xff0c;我自信满满地导入了500份问卷&#xff0c;结果在组…...

C++内存管理 C++模板

个人主页:小则又沐风 个人专栏:<数据结构> <竞赛专栏> <C语言> <C> 目录 一 C的内存管理 1.C语言的内存管理 2.C的内存管理 3.new和delete的实现原理 4. C内存管…...

从雅可比矩阵到概率重塑:标准化流如何成为生成式模型的精确解?

1. 标准化流&#xff1a;生成式模型的精确解 想象你手里有一张白纸&#xff0c;上面画着一个标准圆形。现在你想把它变成一幅复杂的山水画&#xff0c;但又希望每一步修改都能精确追踪——这就是标准化流&#xff08;Normalizing Flows&#xff09;在概率分布世界做的事情。与其…...

告别环境冲突!VSCode里用IDF插件轻松管理多个ESP-IDF版本(5.3/4.4自由切换)

多版本ESP-IDF项目管理实战&#xff1a;VSCode高效工作流全解析 当你的工作台同时躺着基于ESP-IDF 5.3的智能家居网关和基于4.4版本的工业传感器项目时&#xff0c;每次切换都需要重新配置环境参数吗&#xff1f;作为经历过这种折磨的开发者&#xff0c;我想分享一套经过实战检…...

YOLOv12解决方案实战:智能安防、交通监控、工业检测三大场景应用

YOLOv12解决方案实战&#xff1a;智能安防、交通监控、工业检测三大场景应用 【免费下载链接】yolov12 [NeurIPS 2025] YOLOv12: Attention-Centric Real-Time Object Detectors 项目地址: https://gitcode.com/gh_mirrors/yo/yolov12 YOLOv12作为NeurIPS 2025最新发布的…...

从‘抓不住’到‘抓得稳’:手把手教你用Gazebo Grasp_fix插件搞定Robotiq夹爪仿真(含物体建模技巧)

从‘抓不住’到‘抓得稳’&#xff1a;Gazebo Grasp_fix插件与Robotiq夹爪仿真实战指南 在机器人仿真领域&#xff0c;Gazebo作为一款强大的物理仿真工具&#xff0c;为开发者提供了测试和验证机器人算法的虚拟环境。然而&#xff0c;当涉及到机械臂抓取任务时&#xff0c;许多…...

嵌入式裸机开发中的轻量级定时调度方案

1. SmartTimer&#xff1a;裸机环境下的轻量级定时调度方案在嵌入式开发中&#xff0c;定时任务管理是个永恒的话题。我最近在做一个空气质量监测项目时&#xff0c;发现传统的裸机编程方式在处理多个定时任务时显得力不从心。硬件定时器资源有限&#xff0c;软件标志位管理又容…...

【医疗信息化开发者必修课】:C# FHIR SDK实战指南——从零构建符合HL7 FHIR R4规范的患者数据服务

第一章&#xff1a;FHIR标准与医疗信息化开发全景概览 FHIR&#xff08;Fast Healthcare Interoperability Resources&#xff09;是由HL7组织制定的现代医疗数据交换标准&#xff0c;旨在通过RESTful API、结构化资源和开放格式&#xff08;如JSON/XML&#xff09;弥合异构医疗…...