C语言:字符数组赋值

article/2025/9/30 13:32:33

字符数组:C语言学习中较麻烦的部分,C语言中没有字符串这种类型的数组,字符串只能存储字符型数组中。

1、定义时直接赋值

char a[10]={"I LOVE C"};//可以直接省去花括号直接写成char a[10]=''I LOVE C";

注意:此处的"I LOVE C"中空格也是占用字节的,字符数组必须要大于字符串所需要的字节,才能容纳字符串。

2、对数组中字符逐一赋值

char a[10]={"I"," ","L","O","V","E"," ","C"};//可以看出我们此处也为空格申请空间

 注意:这种写法不能省略花括号的

3、strcpy函数赋值

格式:strcpy(a,b) 可以将b中字符串内容复制到a中,其实就是b的内用覆盖a的内容。

#include<stdio.h>
#include<string.h>
int main()
{char str1[10]="I LOVE",str2[]="C";/*定义两个字符数组,并为str2赋初值*/strcpy(str1,str2);/*调用strcpy函数*/puts(str1);/*输出字符串1*/return 0;
} 

 输出结果为C 注意:调用strcpy函数需要调用头文件string.h

char arr[10];

strcpy(a,"I LOVE C");


常见错误辨析

错误(1)

char a[10];

a[10]="I LOVE C";

 错误(2)

char a[10];

a="I LOVE C";

这次变聪明了,直接赋值a,但这种写法仍是错误的,(初学甚浅,目前未接触指针,不过多解释) 

char a[10]; a="I LOVE C";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的I LOVE C常量,这里的指针a出现混乱,不允许!会出现const char无法转换为char类型


补充一点 char *a; a="I LOVE C";//这种情况是正确的。因为定义时a还没有指向的空间,不存在指针指向混乱的情况

  引用于C语言 字符数组赋值的方法 整理

C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是, 它们都不能用C语言的运算符进行复制和比较操作。 

 引用于C语言 字符数组赋值的方法 整理

典型例题 

下述对C语言字符数组的描述中错误的是(?)
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较

 小伙伴知道选择什么吗?答案隐藏在其中,欢迎讨论,指教。


特别 strcat函数

#include<stdio.h>
#include<string.h>
int main()
{char st1[30]="I LOVE";char st2[10]=" C";//gets(st2);//相当于赋值st2值,输入值 strcat(st1,st2);//区别于strcpy puts(st1);return 0;
}

小伙伴知道此处输出什么结果吗?仍是I LOVE C!

字符串连接函数strcat
格式:strcat (a,b);

功能:把b中的字符串连接到a中字符串的后面,并删去字符串1后的串标志“\0”。

本函数返回值是a的首地址。

既然没有终点,那在何处又何妨呢。


希望对你有帮助,语言学习贵在坚持输入和输出!


http://chatgpt.dhexx.cn/article/x6mFBJHU.shtml

相关文章

【C#】 Convert.ToInt16 、Convert.ToInt32、Convert.ToInt64 区别

一般写程序是用的都是Convert.ToInt32&#xff0c;为什么呢&#xff1f; 1.Convert.ToInt是数据类型转换成int类型 2. 有三种方法toint16,toint32,toint64 int16-数值范围&#xff1a;-32768 到 32767 int32-数值范围&#xff1a;-2,147,483,648 到 2,147,483,647 …

C# 中int short Int16 Int32 Int64详解

Java中没有Int32,Int64,,只有int,short,long Java中int就代表Int32 ,short就代表Int16&#xff0c;long就代表Int64 首先&#xff0c;几个基本的关键字&#xff1a; Int16 short, 占2个字节. -32768 ~ 32767 Int32 int, 占4个字节. -2147483648 ~ 2147483647 Int64 lon…

【C++】INT32_MAX

INT32_MAX INT32_MAX可以把它认为在limits.h下面的一个宏。关于宏&#xff0c;可以参考这篇文章&#xff0c;直接点击&#xff01;其实就是一个别称&#xff01;

python中int的取值范围_int32的取值范围是多少?

int32的数值取值范围为“-2147483648”到“2147483647”;而int64的数值取值范围为“-9223372036854775808”到“9223372036854775808”。 int32的取值范围 计算机中32位int类型变量的范围,其中int类型是带符号整数。 正数在计算机中表示为原码,最高位为符号位: 1的原码为000…

c语言unsigned int 范围,unsigned int 32比特数据范围为-2147

提到unsigned,大家应该都了解,有朋友问c语言中unsigned什么意思,还有人想问c语言中的unsigned是什么意思,这到底是咋回事?事实上unsigned呢,下面是小编推荐给大家的unsigned int,下面我们一起来看看吧! unsigned int 一、指代不同 1、int:定义整数类型变量的标识符。 …

C#中ToInt32以及类似函数用法介绍

C#中ToInt32以及类似函数用法介绍 作用程序举例程序逻辑程序代码 程序 作用 将指定的值转换为 32 位有符号整数。对应的还有ToInt16&#xff0c;ToInt64 指定的值可以是字符串、时间、位等数据类型。 程序举例 程序逻辑 当输入值整数时&#xff0c;当输入值大于0&#xff0…

C语言 —— int32_t uint32_t 及size_t

文章目录 int32_t和int区别使用原因stdint.h源码 int32_t和uint32_t的区别size_t在不同机器中定义不同&#xff1a;stdint.h源码 参考文档 int32_t和int区别 我们都知道&#xff0c;C语言的基本类型就char, short, int 等。但是我们在看其他源码时经常碰到int32_t, int8_t这种…

linux futex 进程同步,Linux的新式线程同步原语——Futex

在我的上一篇文章《本地POSIX线程库》http://www.linuxidc.com/Linux/2013-10/91409.htm 中&#xff0c;提到了Futex一词&#xff0c;发现好多读者误以为这是我的笔误&#xff0c;将Mutex错写为Futex了。其实Futex是Linux的一种全新的线程同步原语。本文将为您解读高效的Futex。…

futex同步机制分析之三内核实现

一、源码引入 前两篇从应用分析到了库&#xff0c;本篇到内核中看看&#xff0c;futex到底何方神圣&#xff1f;&#xff08;Linux3.1.1&#xff09; 先看一下futex.c和futex.h&#xff08;kennel/futex.c linux/futex.h&#xff09;: /*** struct futex_q - The hashed futex…

futex同步机制分析之一应用

futex同步机制分析之一应用 一、多线程&#xff08;进程&#xff09;的同步机制 c编程中最难的部分有哪些&#xff0c;估计绝大多数人都会首先提出来是多线程&#xff08;进程&#xff09;编程。为什么多线程编程难呢&#xff1f;一个主要的原因就是多线程的同步。在多线程同步…

FUTEX_SWAP补丁分析-SwitchTo 如何大幅度提升切换性能?

作者简介 胡哲宁&#xff0c;西安邮电大学计算机科学与技术专业大二学生。 Google SwitchTo 由于协程本身对操作系统的不可见性&#xff0c;协程中出现的 BUG 往往不能通过一些已有的工具去排查。在谷歌内部有一套闭源的用户态任务调度框架 SwitchTo, 这个框架可以为谷歌提供延…

futex问答

一、什么是futex&#xff1f; futex是Fast Userspace muTEX的缩写&#xff0c;该机制是由Rusty Russell、Hubertus Franke和Mathew Kirkwood在2.5.7版本的内核中引入&#xff0c;虽然名字中有互斥锁&#xff08;mutex&#xff09;的含义&#xff0c;但实际它是一种用于用户空间…

Futex系统调用,Futex机制,及具体案例分析

Futex 1、背景1.1 自己实现锁1.1.1 自旋锁1.1.2 sleep自旋1.1.3 小结 1.2 futex1.2.1 什么是Futex1.2.2 futex诞生之前1.2.3 futex诞生之后 2、Futex系统调用3、Futex机制4、具体案例分析4.1 在Bionic中的实现4.2 C语言实现 5、参考及扩展阅读 首先要区分一下futex系统调用和fu…

深度讲解futex问答(上)

一、什么是futex&#xff1f; futex是Fast Userspace muTEX的缩写&#xff0c;该机制是由Rusty Russell、Hubertus Franke和Mathew Kirkwood在2.5.7版本的内核中引入&#xff0c;虽然名字中有互斥锁&#xff08;mutex&#xff09;的含义&#xff0c;但实际它是一种用于用户空间…

数组中的字节数

##sizeof查看定义的数组所占用字节数 #include<iostream> int main(){using namespace std;int Inter [10];short sh [10];char ch [10];long lg [10];float fl [10];double dou [10];cout << "int style has " << sizeof Inter << " …

int转byte数组以及相关原理

前言 本文由int转byte数组这样的题目代码引发的思考&#xff0c;其中涉及到多个让我混淆的地方。 直接上代码 public byte[] toBytes(int number){byte[] bytes new byte[4];bytes[3] (byte)number;bytes[2] (byte) ((number >> 8) & 0xFF);bytes[1] (byte) ((…

java的byte数组的不同写法

经常看到java中对byte数组的不同定义&#xff0c;粗略整理的一下&#xff1a; 一个字节&#xff08;byte&#xff09;&#xff1d;8位&#xff08;bit&#xff09;&#xff0c;“byte数组”里面全部是“byte”&#xff0c;即每一个byte都可以用二进制、十六进制、十进制来表示。…

byte数组快速拷贝,byte数组合并,System.arraycopy详解

博客来源&#xff1a; 项目过程中用到byte[]数组相加问题&#xff0c;给出两个byte[] 需要合并成一个byte[]进行计算…那么需求来了……数据量达10W级&#xff0c;怎么合并 调用系统自带方法&#xff08;System.arraycopy&#xff09; 参考程序 org.junit.Test public void f…

程序、进程、线程的区别

程序、进程、线程的区别 进程是程序的实体&#xff0c;而线程又是进程的实体。进程又是线程的容器。 程序、进程、线程三者区别如下: 1.程序&#xff1a;程序并不能单独执行&#xff0c;是静止的&#xff0c;只有将程序加载到内存中&#xff0c;系统为其分配资源后才能够执…

操作系统-进程与线程的区别

操作系统-进程与线程的区别 1.什么是进程 简单的讲&#xff0c;进程是执行的程序&#xff0c;资源分配的最小单位。 进程包括&#xff1a;文本段&#xff08;程序代码&#xff09;、程序计数器的值、CPU寄存器的内容、堆、栈、数据段 进程的状态&#xff1a;新的、就绪、运行…