数组初始化与赋值注意的问题

原创 2012年03月27日 14:43:27

一、数组大小容易被忽视,如,定义 char str[10]  ;程序代码中往往对str[10]进行了赋值,所造成的结果必然是访问了非法内存,引起“断错误”

或者是提示内存错误。不过我曾经有一段代码,对str[10]进行了赋值,但是在虚拟机里运行没有出错,但是经过 arm-linux-gcc 编译后下

载到ARM板上运行时,出现 “”segmentation fault“ ,当时查错3个小时,实在悲剧,估计两种环境下对内存错误的容忍度不同吧!


二、将字符串赋值给一个数组。如果在刚定义时以这种方式赋值: char str[]="12345";是可以的。

但是,如果是: char str[5];str="1234";编译时则会出现警告:str.c: In function ‘main’:
str.c:5:3: error: incompatible types when assigning to type ‘char[10]’ from type ‘char *’
str.c:8:2: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’

运行则出现:root@linux-VirtualBox:~/test/example#./str 
1234
段错误

但是:如果数组是以形参的形式定义的,则可以在子函数里 用 str=”1234“;进行赋值。


三、比较好的赋值方式。比如: 用strcpy(str1,str2) 等函数将字符串赋值给数组。


四、整型数组不能用printf("%s\n",str); 来输出,字符数组才可以。


数组只能在初始化时整体赋初值。以后再赋值只能逐一改变了。

数组只能在初始化时整体赋初值。以后再赋值只能逐一改变了。很少用数组,都忘光了。以前没有注意这个,今天算是记住了。 分别遇到以下情况: 错误一:// 初始化后,不能整体赋值int ftime[] = n...

使用数组时注意的一些问题

/*  *数组注意的一些问题  */ #include using namespace std; int main() {  const int ArraySize = 5;  //...

C语言中字符数组的初始化与赋值

C语言中字符串的初始化赋值及其他操作

数组初始化赋值

1、创建数组后,通过循环对数组赋值。 例如代码: int [] nums = new int [100]; for(int i=0;i nums[i] = i; } 2、例如代码: in...

C语言的数组初始化

    这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会比较详细...
  • sibylle
  • sibylle
  • 2008年01月05日 16:54
  • 151981

C、C++数组初始化,数组赋值

原文发于:http://qing.weibo.com/2059598087/7ac2f907330029ze.html 在C/C++中,可以在数组定义的时候对其进行初始化: int a...

java字符串数组初始化和赋值

//一维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = new String[]{"","...

数组随机赋值 出重与排序问题

  • 2012年12月19日 21:17
  • 535B
  • 下载

用指针给数组赋值的一个小问题

问题是这样的, 我打算输入与元素为数组赋值, 然后反向输出数组元素# include int main(void) { int a[10], * p = a, i; for (i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组初始化与赋值注意的问题
举报原因:
原因补充:

(最多只允许输入30个字)