数组名 vs 指针
2013-10-18 22:38
169 查看
ex:
上述 s+=2; 之所以错误是因为, 当声明一个数组 s 时, s 是可以看做 指针,但是 他是一个 常量指针 !!!相当于 char * const s = "abcde";
而当数组作为函数形参的时候,就退化成为一个普通的指针了,所以可以 a++ 啦~~~
#include <stdio.h> #include <stdlib.h> void test(char a[]) { a++; //ok printf(" second char is %c\n", a[0]); } void main() { char s[] = "abcde"; char *p = s; p += 2; //OK //s += 2; //error: '+=' : left operand must be l-value printf("%c\n",p[0]); test(s); }
上述 s+=2; 之所以错误是因为, 当声明一个数组 s 时, s 是可以看做 指针,但是 他是一个 常量指针 !!!相当于 char * const s = "abcde";
而当数组作为函数形参的时候,就退化成为一个普通的指针了,所以可以 a++ 啦~~~
相关文章推荐
- 杨氏矩阵找数
- linux系统下将php和mysql命令加入到环境变量中的方法
- char类型和string类型(C++,C#)
- 免费虚拟机VirtualBox 4.3更新 支持Windows 8.1和Mavericks
- nyoj-527-AC_mm玩dota
- OpenLayer(OSM)
- 如何使用命令行测试你的网速
- 如何使用命令行测试你的网速
- iLinux:Linux平台最大的自定义图标收藏铺
- OCP-1Z0-051-V9.02-87题
- 处理上百万条的数据库如何提高处理查询速度
- weblogic密码遗忘补救方法( WLS Zip Distribution for Oracle WebLogic Server 12.1.2.0)
- django: form fileupload - 1
- mysql 笔记
- mac os lion 编译安装php memcached 扩展
- 进入大学的第一篇博客
- 整形int数组操作
- UVA 11300
- linux内核开发之并发控制(五)
- linux内核开发之并发控制(四)