字符数组、字符串和指针

Halcon窗体开发避坑指南:C#自定义控件实现7大图像交互功能 本文详细介绍了如何利用C#封装自定义Halcon控件,以解决原生HWindowControl功能不足的问题。通过实战代码,展示了如何实现图像按比例显示、鼠标拖动缩放、灰度值读取、图像保存、截图及图形叠加等七大核心交互功能,并重点剖析了内存管理、坐标转换等开发避坑要点,帮助开发者构建稳定可复用的机器视觉组件库。 阅读详情

字符数组的初始化

  1. char c[5] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};把5个字符依次赋值给c[0]~c[4]。
  2. 如果初值个数小于数组长度,则其余的元素会自动定为空字符’\0’。char c[5] = {‘h’, ‘e’, ‘l’, ‘l’};c[4]会为’\0’。
  3. 如果初值个数等于数组长度,在定义时可以省略数组长度,系统会根据初值个数确定数组长度。char c[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};数组c的长度会被系统定位5。

字符串

C语言中是将字符串作为字符数组来处理的(C语言没有字符串类型),区别是字符串末尾有空字符’\0’来作为结束标志,而字符数组不要求这么做。

用字符数组存放一个字符串。

char c[] = {“hello”}; 等价于 char c[] = “hello”; 等价于 char c[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};
而不与下面的等价:
char c[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};
注意上面的数组长度为6,而不是5。下面的是5。

用字符指针变量指向一个字符串常量

char *string = "I love China!";

等价于下面两行:

char *string;
string = "I love China!";

这里有一点需要深入,上面的定义表示string是一个char*型指针,指向一个char型字符,那么为什么可以写成string = "I love China!"的形式呢?
原因在于"I love China!"是一个字符串常量,被分配在只读数据区,string = "I love China!"表示将该字符串常量的首地址赋给了string,从而让string指向了"I love China!"这个字符串。

注意:string是指针变量,其值可以改变->可以再次赋值string = “hello”;
而"I love China!"是字符串常量,其值不能改变,如下面代码段:

char str1[] = "hello";
char *str2 = "hello";
str1[2] = 'r';	//合法
str2[2] = 'r';	//非法,字符串常量不能被改变
str2 = "world";	//合法,str2是变量,可以赋另一个值

联想记忆:数组名是常量,其值不能改变,如下面代码段:

char str[] = "I love China!";
str = str+1;	//错误,数组名是常量,其值不能改变
str = "hello";	//错误,数组名是常量,其值不能改变
str[1] = 'r';	//合法,因为改变的不是str,而是*(str+1)
手把手教你用 Docker 构建自己的 CentOS 基础镜像 目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏... 阅读详情

相关推荐

Python头歌实验题目(2024版)

武汉理工大学头歌平台实验题目

2401_84152595的博客 2万+

C语音:定义数组,赋初值“I am happy”用for、%c输出字符数组

#include <stdio.h> int main() { char c[10]; int i; c[0]='I'; c[1]=' ';c[2]='a';c[3]='m';c[4]=' ';c[5]='h'; c[6]='a';c[7]='p';c[8]='p';c[9]='y'; for(i=0;i<=9;i++) { printf("%c",c[i]); } printf("\n"); return 0; }

BaiLan2004的博客 1183

Arduino软串口实战:用TTL转RS485模块解决电机通信难题(附完整代码)

本文针对Arduino Uno硬串口与RS485半双工通信不兼容导致电机控制无响应的问题,提供了基于软串口(SoftwareSerial)的完整解决方案。详细讲解了TTL转RS485模块的选型、硬件连接避坑(推荐引脚8和7),并附带了完整的代码实现与调试指南,帮助开发者稳定实现Arduino与电机驱动器的RS485通信控制。

5f4d3s2a1q的博客 781

字符数组的长度问题

char c[]=“I am happy”;的长度为11,和下面的字符数组等价。 char c[]={‘I’,’ ‘,‘a’,‘m’,’ ‘,‘h’,‘a’,‘p’,‘p’,‘y’,’\0’}; 而和下面的不同: char c[]={‘I’,’ ‘,‘a’,‘m’,’ ',‘h’,‘a’,‘p’,‘p’,‘y’};(长度为10) ...

CypherF的博客 3914

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2202

华为MetaERP月结加速方案:并行关账技术深度解析

【摘要】华为MetaERP并行关账技术通过创新架构设计,将传统串行月结流程(8-12小时)优化为并行执行(2-4小时)。关键技术包括:1)基于DAG引擎的任务依赖分析,实现模块/子任务三级并行;2)Saga模式分布式事务保障数据一致性;3)动态资源分配算法提升CPU利用率至60-80%。实施效果显示月结时间缩短70%,成功率提升至99.8%,错误恢复时间减少75%。该方案为大型企业ERP系统提供了高效的月结加速方案,未来还将结合AI调度与混合云扩展持续优化。

金牌架构师 1441

C语言学习笔记之数组(三)

字符数组 定义字符数组 定义字符数组和数值型的数组格式是一样的,数据类型为char型。 如char a[10];这就定义了长度为10的数组,每个元素都存放一个字符。 字符数组的初始化 对字符的初始化,最容易理解的是用“初始化列表”,把各个字符一次赋给数组中的元素。 例如:char a[10] = {'I',' ','a','m',' ','h','a','p','p','y'}; 把这十个字符一次...

dayanlunhui的博客 691

(四)DDR协议命令波形时序一——(ACT、Read、Write)

文章目录一、DDR命令真值表二、ACT激活命令时序要求2.1、ACTIVATE波形——tRRD、tFAW2.2、ACTIVATE波形——tRAS、tRC三、Read命令时序要求3.1、Read 波形——无Additive Latency3.2、Read 波形——有Additive Latency3.3、Read 波形——Additive Latency使用场景 一、DDR命令真值表 DDR的Command命令由CKE、CS#、RAS#、CAS#、WE#信号组成,这几个信号进行不同的搭配组合会形成不同的Co

Mr.翟的博客 6873

string 基本概念和用法

string 基本概念 本质: string是C++风格的字符串,而string本质上是一个类 string和char区别: * char是一个指针 * string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete,替换relace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。 string构造函数 构造函数原型: str

个人站点:https://www.heimajinpai.cn/ 1059

【重要内容】敬告读者

由于优快云近期将要搞事情,此专栏建议已购买的用户将内容保存到本地。尚未购买的用户请待9月1日后再决定是否需要购买。如此规则上线,本人将会关闭此专栏。并寻找其他渠道进行发布。

魔落的博客 910

材料带隙预测(图神经网络)(⭐⭐)—— 用晶体图网络预测钙钛矿材料的能带隙,加速光伏材料筛选。技术栈:CGCNN、MEGNet、Materials Project数据集

钙钛矿太阳能电池以其高效率、低成本的优势迅速崛起,但传统“试错法”材料筛选效率极低,严重制约了光伏技术的迭代速度。近年来,基于图神经网络的材料带隙预测方法,特别是晶体图神经网络(CGCNN)和材料图网络(MEGNet),为这一问题提供了革命性的解决方案。本文系统梳理了材料带隙预测从传统计算到深度学习的演进历程,深入剖析了CGCNN与MEGNet的架构设计、数学原理及创新机制,详细阐述了Materials Project数据集的构建、特征工程与处理策略。

2201_76125393的博客 48

指针概括

什么是指针? 大家都知道为了存放一个整数,我们用的是int类型,那么如果我现在要存放一个地址应该使用什么变量呢? int  a=10; int* p=&amp;amp;a; char a='b'; char* p=&amp;amp;a; 这里的P就是一个指针变量,它存放了a变量的地址。我们用int*  来表示指针类型。那么int* 类型表示用来存放 整数型变量的地址。同理: char* 类型表示...

MyHome 272

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 157

字符数组和字符串指针的区别

字符数组和字符串指针都可以用来存储字符串。除了形式上的区别,相差不大!给出一段代码#include&amp;lt;iostream&amp;gt; using namespace std; int main() { char a[10]="Hello!"; char *b="world!"; cout&amp;lt;&amp;lt;a&amp;lt;&amp;lt;endl; cout&amp;lt;&amp;lt;&amp;amp;a

weixin_41860749的博客 3537

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

字符数组、字符指针和字符串

一、字符数组、字符串和‘\0’的关系

J_Jeff的专栏 636

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

指向字符串的指针 和 字符数组的区别

C语言的字符串有两中表现形式: char *ch="hello world"; char ch[]="hello world"; 这两种形式都能实现字符串的存储,但有区别: 1、复制的不同 对于字符数组,我们可以对某个字符进行赋值: char ch[4]='r'; 这将对第五个元素进行赋值,但不能以下面方式赋值: char ch[20]; ch="hello worl

天涯明月的专栏 3816

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

字符串指针和字符数组的区别

用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题: 1. 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。 2. 对字符串指针方式 char *ps="C Langu...

a561287102360903的博客 192

字符数组和字符串指针区别

字符数组和字符串指针区别 字符数组 字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。 字符串指针本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。 #include <stdio.h> #include <string.h> int main() { char s1[] = "hello"; char *s2 = "hello"; printf("sizeof(s1) : %d,%

perseverance51博客 748

使用字符串指针变量和字符数组的区别

用字符数组和字符指针变量都可实现字符串的存储和运算。 但是两者是有区别的。在使用时应注意以下几个问题: 1. 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘/0’作为串的结束。字符数组是由若干个数组元素组成的,它可用来存放整个字符串。 2. 对字符数组作初始化赋值,必须采用外部类型或静态类型,如: static char

zhjqxy的博客 4066

字符数组、字符串指针和字符指针的定义与区别

所谓的字符数组即是存放字符或字符串的数组,通常有两种形式。如:上述第一种定义方式是定义一个字符数组,其存放的元素是字符;第二种也是字符数组但也可以称为字符串数组,其数组的大小会有编译器自动计算字符串的长度,之所以有第二种定义方式是因为字符串在C语言中默认是以数组的形式存储的。需要注意的是:不可定义一个字符数组用来存放字符串,只有通过第二种方式定义或采用字符指针的形式定义。如:char str[2] = { "hello","world" };这种方式是错误的。

2301_80667185的博客 654

数组和指针的区别、字符数组和字符串指针区别

1、数组是数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。

gaosaixing的博客 2654

C++笔记:字符数组和字符指针和字符串相关区别

一、字符数组与字符串的关系 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。当然在C++ 标准库提供了 string 类类型,在这里我们暂时不作考虑(为了理解指针部分)。但C语言只提供字符数据类型,并没有提供字符串数据类型,因此字符串的存取全完依赖于字符类...

weixin_42124234的博客 885

字符数组和字符串指针,指针和引用,指针和多维数组

1、字符数组和字符串指针 2、指针和引用 3、指针和多维数组

scuxc的专栏 442

字符串指针变量和字符数组的区别

字符串指针变量和字符数组的区别

小郑在路上 353

C++中的字符串指针和字符数组

字符串可以用字符数组与字符串变量两种方式来存储,效果类似。 一、用字符数组来存储字符串: char st1[100],st2[100] ; //字符数组说明 cin>>st1>>st2; long a,b; 输入:hello,  world 则st1={‘h’,’e’,’l’,’l’,’o’,’,’,’\0’} st2={‘w’,’o’,’r’,’l’,’d’,’\0} 字符’\0

a2796749的专栏 728

c++中字符数组、字符串、字符指针和字符指针数组

c++中字符数组、字符串、字符指针和字符指针数组

weixin_50557558的博客 725
上一篇: 指针和数组
hellohelloe
博客等级 码龄8年 18粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值