-
2021-05-19 08:25:17
同C语言中其它数据类型一样,字符串也有常量和变量之分。字符串常量是由双引号括起来的一串字符。如"string"就是字符串常量,printf和scanf函数中的"%d%d"也是字符串常量。
C语言本身并没有设置一种类型来定义字符串变量,所以字符串的存储完全依赖于字符数组,但字符数组并不等于是字符串变量。下面介绍给一维字符数组赋初值的方法。
1.将所赋初值放在一对花括号中,如: charstr[10]={'s','t','r','i','n','g','\0'};
此处赋初值时,人为地在最后一个有效字符后加入了串结束标志'\0'。而如果所赋初值的字符个数少于数组的元素时,系统将自动在其后所有的元素中加入串结束标志'\0'。因此,上述赋初值语句也可以写成: charstr[10]={'s','t','r','i','n','g'};
由此可知,当使用一个字符数组来存放一个字符串时,数组的大小至少要比实际存放的最长字符串多一个元素,多出的这个元素用于存放串结束标志。否则,系统会将其视为一个普通的一维字符数组来处理。
2.当用赋初值的方式来定义字符数组大小时,这时的定义应写成: charstr[]={'s','t','r','i','n','g','\0'};
若上面的定义写成: charstr[]={'s','t','r','i','n','g'};
则是错误的,因为所赋初值的末尾没有串结束标志。也就是说,上面的形式只是定义了一个有6个元素的字符数组。
可以直接用字符串常量给一维字符数组赋初值,例如: charstr[10]={"string"};
习惯上均省略花括号,简写成: charstr[10]="string";
同样应注意的是字符数组大小要比字符串多一个元素,用以存放字符串结束标志。上述定义也可以写成: charstr[]="string";
系统将按字符串实际的字符个数来定义数组的大小,在此数组 str 将包含7个元素(含系统自动加的'\0')。
更多相关内容 -
C语言数组赋初值
2021-03-15 11:35:31typedef struct { int aiHistoryResult[FACE_HISTORY_FRAME]; }pro_S, *pro_P; Handle = (pro_P)_hModule; //int Handle->aiHistoryResult[FACE_HISTORY_FRAME] = {0};...memset(Handle->typedef struct { int aiHistoryResult[FACE_HISTORY_FRAME]; }pro_S, *pro_P;
Handle = (pro_P)_hModule; //int Handle->aiHistoryResult[FACE_HISTORY_FRAME] = {0}; //错误 //Handle->aiHistoryResult = {0}; //错误 memset(Handle->aiHistoryResult, 0, FACE_HISTORY_FRAME*sizeof(int)); //正确,但是这样只能赋值0;想赋值其他的数就乱了,因为是按照字节来复制的
-
C语言字符数组赋初值
2017-11-29 21:36:50C语言可以给字符数组赋值的方法 转载 2012年04月06日 10:23:36 标签:语言 /c 31190 学了这么多年的C语言,突然发现连字符串赋值都出错,真的很伤心。 char a[10]; 怎么给这个数组...C语言可以给字符数组赋值的方法
学了这么多年的C语言,突然发现连字符串赋值都出错,真的很伤心。
char a[10];
怎么给这个数组赋值呢?
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");
易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。
直接尝试对字符串进行复制或比较操作会失败。例如,假定str1和str2有如下声明:
char str1[10], str2[10];
利用=运算符来把字符串复制到字符数组中是不可能的:
str1 = "abc"; /*** WRONG ***/
str2 = str1; /*** WRONG ***/
C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:
char str1[10] = "abc";
这是因为在声明中,=不是赋值运算符。
试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:
if (str1==str2) ... /*** WRONG ***/
这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为str1和str2有不同的地址,所以表达式str1 == str2的值一定为0。
原始网址:http://blog.chinaunix.net/space.php?uid=7390305&do=blog&id=2057100
-
如何给数组用fill函数和memset函数给数组赋初值
2021-05-23 02:34:57} memset函数一般只用于赋初值为0或者-1 #include #include #include #include #include #include #include typedef long long ll; using namespace std; #define INF 1e9+7 int main() { int a[100]; memset(a,-1,...fill是按照单元来赋值的,所以可以填充一个区间的任意值
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;
using namespace std;
#define INF 1e9+7
int main()
{
int a[100];
fill(a,a+10,100);
for(int i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
memset函数一般只用于赋初值为0或者-1
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;
using namespace std;
#define INF 1e9+7
int main()
{
int a[100];
memset(a,-1,sizeof(a));
for(int i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
memset函数使用
函数原型 void *memset(void *s,int c,size_t n): 功能 将已开辟内存空间 s 的首 n 个字节的值设为值 c. 头文件 #include
【C++】fill函数,fill与memset函数的区别
转载自:https://blog.csdn.net/liuchuo/article/details/52296646 memset函数 按照字节填充某字符在头文件里面fi ...
C语言中的memset函数和数组指针
代码: #include #include using namespace std; int main(){ ] = {}; mems ...
批量初始化数组和memset函数
对于数组的初始化有一下三种方式: int a[]={1,2,3,4,5} //通过判断初始化值得个数来却仍数组长度 int b[5]={1,2,3} //数组长度为5,可是初始值却只有三个,因此,不 ...
关于数组的初始化memset函数
关于数组的初始化memset函数 其实memset复制时按bit8个8个的赋值,有兴趣的可以自己百度.
[转载]C++二维动态数组memset()函数初始化
来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...
memset()函数的使用
1.概述 memset()函数,称为按字节赋值函数,使用时需要加头文件 #include或者#include.通常有两个用法: (1)用来 ...
memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
深入学习 memset 函数
最近,和同学讨论了一下memset函数,趁着周五空闲做一总结. memset函数最常用的功能就是初始化数组了(主要是置零),如 #include #include & ...
随机推荐
Swift-数组
Swift数组 OC和Swift数组的比较 OC 只能存放对象 swift 既可以存放对象,又可以存Int,Float等基本数据类型 下面是swift数组的具体示范 空数组 let arr = [] ...
[ubuntu] adb devices出现no permissions
简书排版 http://www.jianshu.com/p/46e8848c6646 今天把一款测试的华为手机带回家,发现无法联机调试 笔者操作系统是 ubuntu 14.04 如果是windows找 ...
Universal-Image-Loader完全解析(上)
Universal-Image-Loader完全解析(上) 基本介绍及使用 大家平时做项目的时候,或多或少都会接触到异步加载图片,或者大量加载图片的问题,而加载图片时候经常会遇到各种问题,如oom,图 ...
Spring依赖注入三种方式详解
在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...
INSTALL_FAILED_VERSION_DOWNGRADE报错
error: INSTALL_FAILED_VERSION_DOWNGRADE 原因:模拟器或者实际的device中已经安装了同名的app,且本次的版本并不高 解决:在模拟器中卸载此同名应用,之后再运 ...
mysql导出数据到excel表中
mysql> select b.username,a.subject,a.money,FROM_UNIXTIME(a.ctime) from shop_pay a INNER JOIN ...
linux下实现自动部署tomcat的脚本
linux下实现自动部署tomcat的脚本 由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务.备份war包.上传新的war包.启动服务.索性就写了一个自动部署的脚本. 脚本如下a ...
php中require、require_once、include、include_once类库重复引入效率问题详解
首先我详细说下这四个引入函数 include() 与require() 的功能相同 唯一不同:require()不管是否被执行,只要存在,php在执行前都会预引入,include()则是执行到该语句时 ...
SQL SERVER 2008远程数据库移植到本地的方法
https://blog.csdn.net/wuzhanwen/article/details/77449229 Winform程序或网站后台的SQL SERVER 2008放置在远程服务器上,用Mi ...
解读经典《C#高级编程》第七版 Page94-100.继承.Chapter4
前言 今天,我们开始进入第四章的解读.本章讲的是继承.要做稍微复杂一些的开发,便不可避免的会使用到继承.本篇文章我们主要解读"实现继承". 另外,从本文开始,我开始使用Markdo ...
-
求助一个c语言结构体数组赋初值的简单问题
2017-04-30 13:53:48就是会出现图中的这种情况,不知道怎么解决。 我用的vs2013 -
二维数组赋初值你会几种方法?
2021-11-07 21:58:02分行给二维数组赋初值: int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 这种赋值方法简单直观,把第一个花括号的值给第一行,一次类推。 问:arr[2][0]=? 答:9 方法二 按数组排列顺序对元素赋值: int ... -
关于二维数组赋初值问题!谢谢,很急,在线等答案
2021-05-22 17:37:33该楼层疑似违规已被系统折叠隐藏此楼查看此楼这个是程序前面的赋初值的部分,光是这部分程序就有问题。整个程序是#include#include#include#defineIE60#defineJE60main(){floatga[IE][JE],dz[IE][JE],ez[IE][JE],hx... -
memset给整型数组赋初值
2016-11-18 11:17:47现有一个整型数组a[5],若要是用memset函数给每个元素赋初值1怎么做呢?是memset(a,1,5*sizeof(int))吗? 其实这样是不对的,memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCII为1... -
单片机 数组 赋初值
2019-07-14 11:09:58C:char 数组赋值 2018年11月26日 20:51:15SSS_369阅读数 47 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sss_369/article/details/84556179 定义一个数组char a[10]; 怎么给这... -
C语言-数组元素的初始化赋值
2021-08-12 22:22:21常用的初始化方式 int arry1[5] = ... } 来源 出自linux kernel/drivers/pinctrl/pinctrl-zynq.c 中对struct zynq_pinmux_function zynq_pmux_functions[]的初始化实现。 总结 一种不常用的C语言对数组乱序初始化手段。 -
c语言中 结构体中有二维数组怎样赋初值
2021-05-22 16:02:20满意答案steven_bj推荐于 2018.02.28采纳率:55%等级:9已帮助:316人最基本...以此类推 ……数组不能整体直接赋值,以下情况除外:1. 初始化时赋值:typedef struct star{char name[8];char information[2][2];}MX;... -
c语言给数组赋值的3种形式
2020-12-23 15:47:03c语言给数组赋值的3种形式在C语言中,对数组进行赋值的三种形式1、通过循环的形式 即:数组名[下标] 对数组的元素进行依次赋值#include int main(){int i;int a[10] = {0};for(i=0;i<10;i++){scanf("%d",&a[i... -
给指针数组赋初值:除了下面的写法,怎样写能实现从键盘输入赋初值呢?
2021-10-26 09:57:16char *a[3]={"What is local bus?","Name some local bus","A local bus is high speed"}; -
c++给数组整体赋初值
2019-04-12 16:45:001.memset memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数...memset()函数原型:extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组; ... -
C和C++中用变量定义数组并赋初值,以及vector的相关操作
2021-04-03 16:17:34C和C++中用变量定义数组并赋初值 下面写的仅仅是个人的一点总结,因为水平有限,如果有什么错误欢迎大家批评指正,不胜感激。 在C和C++中,如果使用变量声明数组大小,尽量不要同时进行初始化,通常会编译错误... -
C语言旅途之简单的数组赋初值并求和
2020-01-18 09:56:43Ⅰ、简单的数组赋初值并求和: ①、//代码摘下直接可以运行 //数组的定义(自己写的) #include<stdio.h> int main() { int i,m[5],sum=0; printf(“please input five numbers of array:\n”); for ( i=0; i&... -
C语言字符数组不赋初值是默认为'\0'还是随机值
2021-01-17 14:28:31展开全部普通数组2113没有赋初值,默认的数组元素5261值是随4102机数,不是0。如果在定义数组1653时,数据类型前面版加上关键字权static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时... -
c语言数组的定义及赋值
2021-02-06 14:43:33一维数组的定义方式如下:类型说明符 数组名[常量表达式];例如:int a[5];它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。此时数组 a 中有 5 个元素,每个元素都是 int 型变量,而且它们在内存中的... -
随笔-c++-数组定义和赋初值
2020-03-28 16:42:39定义:int arry[10]; 定义并赋值:int arry[10] = {…}; -
c语言中如何给数组定义并赋初值?
2021-01-14 16:36:36展开全部字符串数组定义赋值:char c[6]={'c', ' h ', 'i', 'n', 'a' , '\0' }整数数组定义赋值:int a[5]={1,2,3,4,5};int a[5];for(int i=0;i<5;i++)a[i]=i;定义float数组并赋值:float b[10]={1.1,2.2,3.3,4.4... -
数组的赋初值
2019-10-04 03:54:41C/C++不支持数组整体赋值,可以在声明数组时整体初始化。无论数组有多大,全部初始化为0的操作很简单,如int a[3000]={0};就可以将a的3000个元素全部置0;若要赋其他值,例如全部赋值为7,写成int a[3000]={7};则... -
C语言结构体赋初值
2019-10-25 11:21:36C语言结构体赋初值 旧的C标准不支持在定义结构体的时候赋值,例如VS2010和VC++6.0 之前我发现我写的在VS2019上运行正常的程序复制到VC6上就报错,一方面是因为旧的C标准不支持一些新函数比如scanf_s和get_s,另一... -
C语言数组默认初值
2019-07-11 11:21:301 全局int数组默认值0,double默认0 2. 非全局数组初值是机器垃圾值 -
给char[]赋初值
2020-07-14 17:35:04 -
c/c++ 结构体赋初值的小技巧
2021-05-26 02:24:49该楼层疑似违规已被系统折叠隐藏此楼查看此楼转:https://blog.csdn.net/datase/article/details/789883201.CC++结构体的初始化今天看到项目中对自定义...}有几种初始化方式:第一种:struct A a = {.b = 1,.c = ... -
【C语言】给指针赋初值
2018-07-19 09:59:43指针未指向任何内存空间,没有初始化的指针可能指向任意一处内存,所以指针一般都要在定义时初始化。 如:char* p=0;...但是最好用0,因为NULL是定义在#include&... 所以你如果在编写函数时,没有用... -
力扣中为什么不能给数组赋初值?
2022-02-04 18:43:53力扣中为什么不能给数组赋初值?力扣中为什么不能给数组赋初值?