C++ PRIMER之4 数组和指针
来源:互联网 发布:javascript怎么写爬虫 编辑:程序博客网 时间:2024/04/29 22:23
1 数组
数组的维度必须为大于0的常量表达式
int a[3] = {0,1,2}; 函数体内的数组,无初始化操作. 函数体外的会初始化默认值.
char b[] = "abc"; 会在后面添加一个空字符. 长度为4.
不允许直接复制和赋值. 长度是固定的.
2 数组操作
下标类型为size_t 保护好避免越界 buffer overflow
3 指针
指针用于指向对象 保存的是另一个对象的地址
double *p; 理解指针时,从右向左阅读.
避免使用未初始化的指针
void* 指针 只是为了保存地址.
给指针赋值: p = &A;
通过指针赋值: *p = "test";
4 指针引用区别
引用必须定义时初始化 而且一直指向该对象.
指向指针的指针 int **p1 = &p2;
指针访问数组, int a[] = {1,2,3,4}; int *p = a; 指向数组的第一个元素.
在指针上加上(或减去)一个整型数值 n 等效于获得一个新指针,指向指针原来指向的元素之后(或之前)的第 n 个元素。
两个指针减法操作的结果是标准库类型(library type)ptrdiff_t的数据
int last = *(ia + 4); 获得ia指针数组的[4]元素. 不可写为 *ia + 4 会取出ia的数值再加4.
指向 const 的指针常用作函数的形参
5 C 风格字符串
带结尾的字符串数组 const char 类型的数组
cstring 是 string.h 头文件的 C++ 版本,而 string.h 则是 C 语言提供的标准库。
#include <cstring>
strlen(s) 返回 s 的长度,不包括字符串结束符 null
strcmp(s1, s2) 比较两个字符串 s1 和 s2 是否相同。若 s1 与 s2 相等,返回 0;若 s1 大于 s2,返回正数;若 s1 小于 s2,则返回负数
strcat(s1, s2) 将字符串 s2 连接到 s1 后,并返回 s1
strcpy(s1, s2) 将 s2 复制给 s1,并返回 s1
strncat(s1, s2,n) 将 s2 的前 n 个字符连接到 s1 后面,并返回 s1
strncpy(s1, s2, n) 将 s2 的前 n 个字符复制给 s1,并返回 s1
永远不要忘记字符串结束符null
const char *str = st2.c_str(); // st2的内容可能会改变,所以请注意这样的BUG
6 自由存储区或堆
每一个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区或堆。C 语言程序使用一对标准库函数
malloc 和 free 在自由存储区中分配存储空间,而 C++ 语言则使用 new和 delete表达式实现相同的功能。
int *pia = new int[10]; 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。
C-style strings(C 风格字符串) compiler extension(编译器扩展)compound type(复合类型) delete expression(delete 表达式 dynamically allocated(动态分配的)
free store(自由存储区)== heap(堆)precedence(优先级)
- C++Primer 数组和指针
- C++ PRIMER之4 数组和指针
- 【C++Primer学习笔记】第4章 数组和指针
- C++Primer学习笔记4 数组和指针
- 《C++Primer》 第四章 数组和指针
- 指针和数组(c++primer)
- 《C++primer》读书笔记---数组和指针
- c++Primer,四,数组和指针
- C++primer(六) 数组和指针
- C++Primer--数组、指针
- 第二遍C++primer->数组指针和指针数组
- C++primer 4.4 数组指针和指针数组(转)
- c++primer阅读笔记之数组与指针
- c++primer笔记之数组与指针的一些总结
- 【C Primer Plus】第十章 数组和指针(一)
- 【C Primer Plus】第十章 数组和指针(二)
- 《C++primer》标准库类型 数组和指针
- 《C Primer Plus 5th》读书笔记-----指针和多维数组
- 关于iOS控制单个viewcontroller旋转需要注意的地方
- 冒泡排序
- 6.7.2.1 处理列表
- 解决Cocos2d-x3.0、3.1 "_opendir$INODE64"symbol(s) not found错误
- 仅通过崩溃地址找出源代码的出错行
- C++ PRIMER之4 数组和指针
- java读取流耗时问题分析
- 【新闻发布系统】——再回首
- Git 常用命令
- shell截取字符串的方法
- 【学习OpenCV】gpu模块里面的page-locked
- poj 2991-Crane
- 防止seekbar拖拽闪烁 加上标志位ischanging
- AppStore提交(Your app information could not be saved. Try again. If the problem persists, contact us)