2012年软考程序员辅导:C语言数组注意问题.docVIP

  • 5
  • 0
  • 约1.15千字
  • 约 3页
  • 2017-09-23 发布于河南
  • 举报

2012年软考程序员辅导:C语言数组注意问题.doc

2012年软考程序员辅导:C语言数组注意问题 int a[10];   数组名是常量不能为左值(如:a = 5;)   不要认为数组元素a[i]代表数组元素的值,它代表数组元素本身,可作为左值使用。   为指针进行初始化的字符串是只读的   (如:char *p = “hello”; strcpy(p, “world”);这样写是错的)   为数组进行初始化的字符串是可写的   (如:char str[10] = “hello”;strcpy(str, “world”);这样写是对的)   注意:   一直以为a代表数组的首地址,可以像指针一样进行a++等操作,但是,数组名代表数组首地址,一定是个常量!   所以不能对数组名进行 a++ 或者是 a-- 的操作,因为常量不能被修改。   但如果定义指向数组的指针 *p=a;   那么这个指向该数组的指针是可以进行 p++ 或者是 p-- 操作的,指针可以通过这种方式来获取元素。   数组名 a 除了代表数组的首地址外,它还代表特定的类型,在此例中 a 代表了int[10] 这个类型。   在编译环境内运行 prinrf(“%d %d)”,sizeof(a),sizeof(p)); 得到了40 4 。   得到这个结果的原因就是数组名 a 代表了它所定义的数组类型int[10],此类型占了10个int型大小

文档评论(0)

1亿VIP精品文档

相关文档