c语言中定义一个字符数组,其中存放的是什么 c语言程序中,定义几个字符数组,在内存中是怎么存储的?

作者&投稿:务庭 (若有异议请与网页底部的电邮联系)
在C语言中,字符数组中存放的内容中字符的ASC码。如果在定义过程中没有赋初值,则数组中的元素都为0。如
char c[10];

定义了c是一个字符数组共有10个元素c[0]、c[1]……c[9],因为没有赋初值,所以这10个元素的值都是0。

如果定义时赋了初值,或在程序中赋元素的值,则该元素保存对应字符的ASC码值。如:

char c[10]="ABCD";

则元素
a[0]=65 //'A'的ASC码是65

a[1]=66 //'B'的ASC码是66
a[2]=67 //'C'的ASC码是67
a[3]=68 //'D'的ASC码是68
在程序中,a[0]='A'和a[0]=65是等价的。

验证:

char a[10]="ABCD";

printf("%d %c\n",a[0],a[0]); //输出65 A

printf("%d %c\n",a[3],a[3]); //输出68 D
a[3]=65;

printf("%d %c\n",a[3],a[3]); //输出65 A
printf("%d",a[6]); // 输出0 因为没有赋a[6]初值,所以其值为0

你定义的char a[60],因为数组是从a[0]开始计算的 如果你没有赋值
那么默认的是全是0 也就是全是空格 以内你定义的是字符型。
‘\0’是系统给你加的 它的位置是a[60]的60个元素的后面 不占用你定义的60个元素
你定义的是字符数组 不是int 行数组 char定义的是放字符 字符串的

这个问题是你把数组与字符串搞混了;
比方说char[60]="i a m",你用字符串赋值的话,你的字母个数必需小于60,否则就会出错,如果小于60的话,系统会自动加"\0",而数组却不同,你可以正好等于60,也就是说最后一个数字不一定等于"\0".如果小于60,则后面当然是0了
简单一点说:你用字符串赋值的话后面系统就会自动加"\0",数组赋值后面是不自加"\0"的.

总体来说,数组未初始化之前都是不可知的,如果强行输出时会是乱码。对于字符型数组,只要定义个数小于等于定义的个数,它都会自动加/0。对于整型数组,不会加/0。

在c/c++中,数组是指 连续分布的内存单元。字符串是一种字符数组,比其他数组特殊的地方是如果数组被赋值(scanf,fread,fprintf,strcpy,nstrcpy)会在数组末尾追加'\0'.
在c语言中,数组大小是不可知的。(strlen(s)只能算出从s开始到'\0'的长度)

一般在C语言中,定义的数组默认存放什么~

char s[200];s="hello_word"这种赋值方式是错误的,静态数组只能初始化赋值,想这样:
char s[200]="hello_word";这样是可以的,在最后一个字母d后面,必然会是一个0,也就是'\0',至于0之后的每个位置,多数编译器会默认初始化为0,但不排除会是乱码的可能,这和编译器有关。

strcat(test,list);是把list连接到test之后,test就变成了之前的test+list。最后输出是正常的。如下图

C语言:先输入一行字符,将其存放在字符数组中,再输入一个指定字符,在字...
答:include <stdio.h> include <string.h> int main(){ char str[100]; // 定义字符数组,存储输入的字符串 char ch; // 定义字符变量,存储输入的指定字符 printf("请输入一行字符:");fgets(str, sizeof(str), stdin); // 读入一行字符 printf("请输入一个指定字符:");ch = getchar()...

c语言数组的定义
答:C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符; 数组名 ;[常量表达式]。其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示...

C语言,一字符串存放在字符数组a中,将字符数组a中下标值为偶数的元素按...
答:假定有: char a[20]="zabkam";a 是字符数组,它的下标从0起,到19为止,有 a[0],a[1],a[2],a[3],a[4],...a[19];下标值为偶数 指 a[0],a[2],a[4],a[6],...a[18] 这些元素。程序如下:include <stdio.h> int main(){ char a[20]="zabkam",t;int i,j,L...

编写一个程序,不用Strcpy函数,怎样将字符数组S2的全部字符复制到字符...
答:这些按序排列的同类数据元素的集合称为数组。6、在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

从键盘输入20个字符,存放在一个字符数组中,然后分别统计其中数字、英文...
答:|| (str[i]>='a' && str[i]<='z'))ch++;//字母 else if(str[i]>='0' && str[i]<='9')num++;//数字 else if(str[i]==' ')blank++;//空格 else other++;i++;} printf("数字%d个,字母%d个,空格%d个,其他%d个\n",num,ch,blank,other);return 0;} 望采纳谢谢 ...

内容及要求: 定义字符串类(String),包含数据成员,存放字符串的字符数...
答:它可以指定从何处开始提取字符串以及何处结束。3.操作字符串 A、replace()方法可以将字符串中的一个字符替换为另一个字符。 String str="This is a String"; String str1=str.replace(‘T‘,‘t‘); //str1="this is a String" B、concat()方法可以把两个字符串合并为一个字符串。

如何在一个数组中存储一个字符串的长度?
答:可以将整数当做字符串(字符串长度不超过10)接收,然后反向输出字符数组元素即可。字符串实际长度可以用strlen函数来计算。方法程序如下:include<stdio.h> include<string.h> main(){char a[10];int i,j;scanf("%s",a);j=strlen(a);for(i=j-1;i>=0;i--)printf("%c",a[i]);printf("\...

定义数组char str[20],从键盘输入一个字符串存入该数组中
答:include <stdio.h>int main(){ char str[20]; scanf("%s",str);//输入 printf("%s\n", str);//输出 return 0;}希望你要的是C语言的。

设有数组定义: char array[]="China"; 则数组 array所占的空间为几字 ...
答:6个字节。字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”...

C语言,char a[3],是不是实际这个字符数组只能存两个字符,剩下一个是\...
答:char a[3]可以存3个字符,如果用它存字符串那么这个字符串的长度最长为2。