4. 数组和指针
来源:互联网 发布:中文维基百科数据库 编辑:程序博客网 时间:2024/06/03 09:18
数组
- 数组的维数必须值大于等于1的常量表达式定义(整型常量,枚举常量,const修饰已初始化的对象),不能为非const变量或者在运行阶段才知道值的const变量。
- 不允许数组直接复制和赋值。(只能循环一个个赋值)
int a2; //不能用另外一个数组初始化
a2 = a; //不能用另外一个数组赋值 - 数组下标的正确类型为size_t,如:
for(size_t i = 0; i != array_size; i++){} - 尽量不要用指针和数组。可使用vector和迭代器代替一般数组,string代替C中字符串。
指针
- 通常不要使用string* p; 定义指针,使用string *p;定义。
string* p1, p2; //p1是指针,p2是string类型;
string* p1, *p2; //p1,p2都是指针
“*”只能就近管一个变量。 - 对指针进行初始化或者赋值,只能:
0或者const的0值常量表达式;(0表示未被初始化)
类型匹配的对象的地址;(完全同一类型,int和double指针不能相互赋值) - void* 指针不允许其操纵它所指向的对象,只支持以下操作:
与另一个指针进行比较;
向函数传递void*指针或从函数返回void*指针;
给另一个void*指针赋值; - 指针和const
通常从右向左看,如果变量和const之间没有*,则为const指针,即变量不可变但是指向的内容可以变;若有有*,则为const对象,即指针指向的内容不能改变;
const double *p; // 指向const对象的指针
const *double p; // 指向const对象的指针
double *const p; // const指针
const double *const p; // 指向const对象的const指针
注意:不能把一个const对象赋值给一个普通的、非const对象的指针;但是可以把一个非const对象的地址赋给指向const对象的指针(并且此const对象的指针不能改变指向的内容,但是其他非const对象可以改变内容) - typedef、指针、const
typedef string *pstring;
const pstring cstr; // const指针
pstring const cstr; // const指针
string *const cstr; // const指针
上述三者等价,特别是”const pstring cstr;”, 此句const修饰的是pstring的类型,而pstring是一个指针,因此是一个const指针。 - 指针和引用的区别:
1) 引用总是指向某个对象,因此定义引用时不初始化是错误的;
2) 引用值是别名,给引用赋值之后,就始终指向同一个特定对象,即其地址就不会改变,修改时只能修改其所关联的对象的值。而指针则可以改变其指向对象的值(通过*),也可以让其重新指向一个新的地址。
- 通常不要使用string* p; 定义指针,使用string *p;定义。
int a = 1024, b = 2048;int *p = &a, *q = &b;p = q; // 则现在p、q均指向b,但是a、b存储的值不变,a = 1024, b = 2048;int a = 1024, b = 2048;int &p = a, &q = b;p = q; // 则现在p中的值变成了2048,相应a中的值也变为了2048.
C 风格字符串
- 概念:以null结束的字符串;
- 尽量使用标准库string,因为标准库已经负责处理所有的内存管理问题,如字符串大小是否越界等等。尽量不要用c风格字符串;
动态数组(new)
- 数组类型变量的限制:1)数组长度固定不变;2)在编译时必须知道其长度;3)数组只在定义其的块语句内存在。
- delete [] p; //必须有[], 才能释放数组所有元素。如果遗漏,必将导致出错。
多维数组
int *ip[4]; // 指针数组,每个元素均存放地址int (*ip)[4]; // (*ip)相当于数组的名字,即(*ip)是int[4]类型的,即ip是一个指向含有4个int元素的数组的指针。
0 0
- 4.数组和指针
- 4. 数组和指针
- 指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 数组指针和指针数组
- 指针数组和数组指针
- 泛型的定义与实操
- 每日一得--eclipse中python插件安装
- pyspark使用 jupyter ,matplotlib, ipython
- overflow-x:hidden
- Linux 文件描述符详解
- 4. 数组和指针
- sql 更新是容易出的问题
- 算法导论第一集
- PHP怎么统计下载次数
- FZU 2087 统计树边(最小生成树)
- Windows下mysql忘记root密码的解决方法
- LeetCode *** 77. Combinations
- 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧
- linux线程