C/C++中数组与指针的区别
2016-03-28 22:01
162 查看
指针与数组可以替换使用,容易让人产生错觉二者是等价的,那么二者到底有什么区别呢?
数组:在静态存储区被创建或者在栈上被创建,数组名对应着一块内存(而不是指向),其地址与容量在生命期内保持不变,且数组的内容可以改变;
指针:可以随时指向任意类型的内存块,“可变”,所以指针更加灵活但也更加危险
数组:用标准库函数strcpy进行复制,而不能使用b=a直接复制这将产生编译错误
指针:可以直接p=q,即将q的地址直接赋给了p
数组:sizeof(a)得到数组的容量
指针:sizeof(*p)得到指针变量的字节数,而不是指针p所指向内存的容量
数组:在静态存储区被创建或者在栈上被创建,数组名对应着一块内存(而不是指向),其地址与容量在生命期内保持不变,且数组的内容可以改变;
指针:可以随时指向任意类型的内存块,“可变”,所以指针更加灵活但也更加危险
数组:用标准库函数strcpy进行复制,而不能使用b=a直接复制这将产生编译错误
指针:可以直接p=q,即将q的地址直接赋给了p
数组:sizeof(a)得到数组的容量
指针:sizeof(*p)得到指针变量的字节数,而不是指针p所指向内存的容量
char a[] = "hello world"; char *p = a; cout<< sizeof(a) << endl; // 12字节 cout<< sizeof(p) << endl; // 4字节
相关文章推荐
- C语言中的特殊转义字符
- 2016年蓝桥杯C/C++B组
- C++ primer 读书笔记--第三章 标准库类型
- 我与C语言的那点故事
- 《C++》08 C++引用
- c语言:链队列的实现
- 《C++》07 C++ 指针
- C/C++动态分配二维数组
- C++ 设计模式 —— 访问者(Visitor)
- 一起talk C栗子吧(第一百三十二回:C语言实例--从内存的角度看进程和线程)
- HDU 1213 How Many Tables(并查集)
- C++中const与#define的区别
- kmp算法字符串匹配C语言实现
- C++作业1
- C语言关键字总结
- C++ MFC常用函数(转)
- VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- 第七届蓝桥杯C语言C组-(自己懂的题目)
- 理解C语言——从小菜到大神的晋级之路(15)——完结篇:C编程风格
- 递归求最大最小值算法 分治策略(c语言实现)