Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 数组名与指针,你弄清楚了吗?
【标  题】:数组名与指针,你弄清楚了吗?
【关键字】:
【来  源】:http://www.cublog.cn/u/16439/showart.php?id=92723

数组名与指针,你弄清楚了吗?

Your Ad Here
数组名与指针,有很多联系,又有很大区别,使用时要注意区别。
 
通常的讲,主要有如下区别:
1、数组名指代一种数据结构,这种数据结构就是数组
char str[10]={0};
char *ptr;
ptr=str;
printf("sizeof(str):%d\n",sizeof(str));
printf("sizeof(ptr):%d\n",sizeof(ptr));
猜想一下运行结果一样吗?
不一样。在字长为32位的操作系统下,输出结果如下:
sizeof(str):10
sizeof(ptr):4
 
2、数组名是一个常量指针,因而不能改变其值,不能做自增、自减等操作。
对比一下以下语句
char str[10]={0};
char *ptr;
ptr=str;
str++;//1
ptr++;//2
1句在编译时会报告错误,2句则正常。
 
3、数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
void
test(char str[200])
{
    printf("sizeof(str):%d\n",sizeof(str));
    str++;
}
 
int
main()
{
    test();
    return 0;
}
 
上述代码编译可以通过,在32位操作系统上运行结果如下:
sizeof(str):4
通过多重继承实现多接口时,解决名字冲突的一种设计模式(forwarding shim):【上一篇】
用VC6做一个简单的画图程序(三):【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • Install Fedora 6 seccessfully
  • 信息安全从业参考
  • More Effective C++ -- Tip 25
  • 食物导致过敏性紫癜小儿过敏性紫癜小儿紫癜过敏性紫癜治疗紫癜怎么治疗
  • (转载)MBR介绍
  • 浅析数据完整性问题
  • [原创]我写的C源代码
  • Anti-Warden技术之外挂的自我卸载
  • 清除字符串中指定的字符
  • 一个解析mp3 ID3 tag和MPEG信息的类
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.