原创 2012年3月5日——学习笔记第8天——c语言字符数组和字符串,声明和定义,初始化和赋值的区别

2012-3-12 21:31 3112 15 15 分类: 消费电子

1、一维数组的定义

一维数组的定义方式为:类型说明符 数组名[常量表达式]

例如:int a[10];

它表示定义了一个整形数组,数组名为a,次数组有10个元素。

说明:

(1)数组名的命名规则和变量名相同,遵循标识符命名规范

(2)在定义数组的时候,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,既数组的长度

(3)常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,c语言不允许对数组的大小做动态定义,既数组的大小不依赖于程序运行中变量的值。例如:下面这样定义数组是不行的:

int n;

scanf("%d",n);

int a[n];

 

2、一维数组元素的引用

数组必须先定义,然后使用。c语言规定只能逐个引用数组元素而不能一次引用整个数组。

数组元素的表现形式为:

数组名[下标]

下标可以是整型常量或整形表达式

注意:定义数组时用到的“数组名[常量表达式]”和引用数组元素用到的“数组名[下标]”的区别

 

3、一维数组的初始化

对数组元素的初始化可以用一下方法实现

(1)在定义数组时对数组元素赋予初值。例如

int a[10]={0,1,2,3,4,5,6,7,8.9};

(2)可以给一部分元素赋值

int a[10]={0,1,2,3,4};

定义a数组中有10个元素,但花括号内只提供5个初值,这表示只给前面五个元素赋初值,后五个元素为0

(3)如果想使一个数组中全部元素为0,可以写成:

int a[10]={0,0,0,0,0,0,0,0,0,0,}; 或int a[10]={0};

不能写成 int a[10]={0*10};

这是与fortran语言不同的,不能给数组整体赋初值。

(4)在对全部数组元素赋初值时,由于数组的个数已经确定,因此可以不指定数组长度。

例如:

int a[5]={0,1,2,3,4}; 可以写成int a[]={0,1,2,3,4};

第二种写法中,花括号中有5个数,系统就会据此自动定义a数组的长度为5.但若数组的长度和提够的初值个数不相同,则数组长度不能省略。例如想定义数组的长度为10,就不能省略数组长度的定义,必须写成:

int a[10]={0,1,2,3,4};

只初始化前五个元素,后五个元素为0

 

 

 

 

4、c语言字符数组和字符串的区别

字符数组不会自动添加“\0”,定义和初始化方式是:char  a[5]={'h','e','l','l','o'};   ,定义是char  a[5]

字符串也是字符数组,但是特殊的字符数组,定义和初始化方式是; char a[]={"hello"};或者char a[]="hello";定义是char a[6]

c语言是不会自动判断数组下标判断的。c++,java是会自动判断数组下标越界,如果下标越界会报错。

如下图所示:

图片

 

 

图片

 

5、声明和定义,初始化和赋值的区别

///变量
 
int i;//
定义
 
extern int i;
//声明
//

  int i = 0//
定义 + 初始化

    int i=9;初始化
    i
= 7;
// 赋值

//函数
//
声明(一般放在*.h的头文件中)

int  GetStringLen();


//
定义(也就是实现体)
int
  GetStringLen()
{
。。。。、
。。。。
}
 

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /2 下一条