Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129086
  • 博文数量: 40
  • 博客积分: 2228
  • 博客等级: 大尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-12 11:48
文章分类

全部博文(40)

文章存档

2011年(11)

2010年(29)

我的朋友

分类: LINUX

2010-07-20 12:06:29

在读《C专家编程》是有关于左值和右值的解释:
1、左值:出现在赋值符左边的符合有时称为左值,“左手边”,也就代表变量的地址,在编译的为每个变量分配一个地址(左值);
2、右值:出现在赋值符右边的符合有时称为右值,“右手边”,也就代表变量的内容,只有在运行时才知。
实例:
char a[9]="abcdefg"; c = a[i];
编译器符号表具有一个地址9980
运行步骤1:取i的值,将它与9800相加
运行步骤2:取地址(9980 + i)的内容
 
char *p; a=p=a; c = *(p+i);
编译器符合表具有一个地址4624
运行步骤1:取地址4624的内容,就是9980;
运行步骤2:取i的值,将它与9980相加
运行步骤2: 取(9980+i)的内容
 
所以使用指针访问数组元素要比使用数组名要多一步
阅读(1117) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~