C++基础之数组、指针与引用

一维数组的声明

```

数组类型 数组名 [常量表达式]

```

常量表达式表示的是数组的个数,即数组的长度,且不能是变量。

一维数组的引用

```

数组名 [下标]

```

一维数组的初始化

1.逐个对元素赋值

```

char a[3]

a[0] = ‘a‘

a[1] = ‘b‘

a[2] = ‘c‘

```

2.聚合方式赋值

```

int a[12] = [1,2,3,4,5,6,7]

```

二维数组

```

数组类型 数组名 [常量表达式1][常量表达式2]

```

下标运算中的整数表达式代表数组每一个维的长度,乘积代表整个数组的长度。

二维数组的引用

```

数组名[下标][下标]

```

二维数组的初始化

```

a[0][1] = 12

int a[3][4] = [1,2,3,4,5,6,7,8,9,10,11,12]

```

字符数组

1.声明

char a[11]

2.赋值

a[0] =‘a‘

char a[] = [‘a‘]

3.聚合方式只能在声明时使用。

4.字符数组不能给字符数组赋值

5.字符数组常做字符串使用,要有字符串结束符‘\0’

6.可以使用字符串给字符数组赋值

7.字符串处理函数:

字符串连接函数:stract()

```

stract(字符数组1,字符数组2)

```

功能:将字符数组2的字符串连接到字符数组1后,并删去字符串1的‘\0‘

字符串复制函数:strcpy()

stracpy(字符数组1,字符数组2)

功能:把字符数组2中的字符串复制到字符串1中,‘\0也一起复制。‘

字符串比较函数:strcmp()

```

strcmp(字符数组1,字符数组2)

```

功能:按照ASCII码顺序比较数组中的两个字符串,并将结果返回,若1>

2,返回一正数,1=2,返回0,1<2,返回一负数。

字符串长度测量函数:strlen()

```

strlen(字符串数组名)

```

功能:测量字符串的长度,不包括‘\0‘,并返回结果

指针

1.代码中通过变量名对内存进行存取操作,代码编译后,将变量名转换为该变量在内存的存放地址,对变量值得存取都是通过地址进行的

2.一个变量的地址称为该变量的指针。

3.如果有一个变量专门用来存放另一个变量的地址,它就是指针变量

4.专门用来存放单元地址的变量类型,就是指针类型

5.指针是一种数据结构,通常所说的指针就是指针变量,它是一个专门用来存放地址的变量,而变量的指针主要指变量在内存中的地址。变量的地址在编写代码是无法获取,只有在程序运行时才可以得到。

指针的声明:

```

数据类型标识符 *指针变量名

```

6.指针的赋值:指针可以在初始化时赋值,也可以在后期赋值。

- 初始化赋值:

```

int i=100;

int *p=&i;

```

- 后期赋值:

```

int i=100;

p=&i;

```

7.通过一个变量名访问一个变量实战直接的,而通过指针访问一个变量时间接的。

8.指针变量名是p,而不是*p

p=&i :取变量i的地址赋给指针变量p

9.指针一定要有明确的指向

10.指针变量不可以直接赋值

11.不能将*p当变量使用

指针运算符和取地址运算符

1.*是指针运算符

2.&是取值运算符

3.自右向左运算

`&*p` :*p相当于变量a,再进行&运算,就相当于取变量a的地址

`*&a`:&a取变量a的地址,再进行*运算,相当于取变量a所在地址的值,即就是变量a

指针与数组

1.指针与一维数组

引用数组元素:下标法和指针法

指针引用数组:

```

int a[10]

int *p

p = &a[0]

```

2.指针与二维数组

```

int a[4][3]

int *p

p = &a[0]

```

1.a+n表示第n行的首地址

2.&a[0][0]可以看做0行0列的首地址,也可以看做二维数组的首地址

3.a[0]+n表示第0行第n个元素的地址

4. *(*(a+n)+m)表示第n行第m列元素

5.*(a[n]+m)表示第n行第m列元素

3.指针与字符数组

```

char *string = "www.mingri.book"

```

指向函数的指针

函数在编译时会被分配一个入口地址,这个函数入口地址就称为函数的指针

返回指针类型的值得函数简称为指针函数

```

类型名 *函数名(参数列表)

```

引用

```

数据类型 & 表达式

```

(1)一个引用被初始化后,无法使用它再去引用另一个对象,它不能被重新约束

(2)引用变量只是其他对象的别名,对它的操作与原来对象的操作具有相同作用

(3)指针变量与引用有两点主要区别:

- 一是指针是一种数据类型,而引用不是一个数据类型,指针可以转换为它所指向变量的数据类型,以便赋值运算符两边的类型相匹配;而在使用引用时,系统要求引用和变量的数据类型必须相同,不能进行数据类型转换。

- 二是指针变量和引用变量都用来指向其他变量,但指针变量使用的语法要复杂一些;而在定义了引用变量后,其使用方法与普通变量相同

(4)引用应该被初始化,否则会报错

使用引用过来传递参数

函数的参数传递分两种:值传递,引用传递

值传递:函数调用时,将实际参数的值赋值一份传递到调用函数中,这样如果在调用函数中修改了参数的值,不会影响到实际参数的值

引用传递则恰恰相反,调用函数修改了参数的值,改变会影响到实际参数。

指针传递参数

- 指针变量可以作为函数参数。

- 使用指针变量传递参数和使用引用传递参数方式的执行效果相同

数组做函数参数

如果传递的出纳室都是同一类型则可以通过数组的方式来传递参数,作为参数的数组可以是一维数组,也可以是多维数组

指针数组

一维指针数组的定义:

```

类型名 *数组名[数组长度]

```

指针数组中的数组名也是一个指针变量,该指针变量指向指针的指针

原文地址:https://www.cnblogs.com/lalavender/p/10487009.html

时间: 2024-10-29 14:07:44

C++基础之数组、指针与引用的相关文章

C++数组指针的引用

数组指针的引用: int a[10]; int * const &b=a; int (&b)[10]=a 在把数组指针的引用传进去,也是以这样的格式,而且参数名可以和全局变量同名 引用不能为空,指针可以为空 "sizeof 引用"得到的是所指向的变量(对象)的大小,而"sizeof 指针"得到的是指针本身的大小 常量指针的引用不能赋值为别的指针,而指针变量的引用可以赋值为别的指针 引用必须初始化,而指针需要赋值为空以防野指针 存疑: 至于引用和指针的

动态创建二维vector数组+指针与引用的区别

二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二维vector方法一:vector<vector <int> > ivec;ivec.resize(m);for(int i=0;i<m;i++) ivec[i].resize(n); 方法二:vector<vector <int> > ivec;ivec

返回数组指针或引用。

法一:基本写法 int (&fun()) [5]; 法二:类型别名 using arrT = int[5]; arrT& fun(); 法三:尾置返回类型 auto fun() -> int(&) [5]; 法四:使用decltype关键字 int a[5] = {1,2,3,4,5}; decltype(a) &fun(); eg: int a[5] = { 1,2,3,4,5 }; decltype(a) &fun(){    return a;} int

5数组指针和引用:数组

数组 一维数组:数据类型  数组名 [常量表达式] 注意: 命名规则和变量名相同 数组后面一定是[],方括号内 是常量表达式 常量表达式表达元素的个数,即数组的长度 定义数组的常量表达式不能是变量 引用: 一维数组引用的一般形式:数组名[下标] 数组元素的下标起始值为0 初始化: 单个元素逐一赋值   a[10]=1;a[9]=100;...... 聚合方式赋值    int a[10]={1,2,.....10} ; int a[]={1,2,.....10}  ; int a[10]={1,

黑马程序员---C基础10【数组指针】【指针数组】【字符串指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [数组指针] 1.数组指针: 定义一个指针指向数组的某一个元素 数组元素指针:指针变量可以指向数组元素: 1)数组名a不代表整个数组,只代表数组首元素的地址: 2)是指向首地址,而不是每一个元素:  2.数组指针的引用: 在指针向数组元素时,允许以下操作 加一个整数(用+或+=),如p+1: 减一个整数(用-或-=),如p-1: 自加P++ 自减p--; 两个指针相减:p1-p2: P+1指向

C++数组,指针,引用以及三者的复合类型

C++数组,指针,引用以及三者的复合类型 这里省去了对这三者的单独介绍,仅仅介绍使用这三者组成的组合类型. 一.两两组合 这三者的两两组合有9种: 数组 指针 引用 数组 数组的数组 数组的指针 数组的引用 指针 指针的数组 指针的指针 指针的引用 引用 引用的数组 引用的指针 引用的引用 1.指针的指针.数组的数组.数组的指针.指针的数组 指针的指针(二维指针),数组的数组(二维数组),数组的指针和指针的数组这里就不介绍了,很多博客文章书籍都有详细的介绍.它们的形式是: 指针的指针: int*

[C/C++基础--笔试突击] 7.指针与引用

概述: 比较抽象的但又很有用的东西 0.0 void*指针:可以保存任何类型对象的地址. 指向指针的指针 函数指针 7.1 指针 一个有效的指针必然是一下三种状态之一: 1)保存一个特定对象的地址: 2)指向某个对象后面的另一个对象 3)0值. 若指针保存0值,表明它不指向任何对象.未初始化的指针是无效的,直到给该指针赋值后,才可使用. 注:*p++和(*p)++不等价,单目运算符*的优先级比++高,故*p++先完成取值操作,然后对指针地址执行++操作,而(*p)++是首先执行屈指操作,然后对该

【C++基础】sizeof 数组 指针 空NULL

笔试遇到很多sizeof的小题,博主基础堪忧,怒总结如下,还是要巩固基础啊啊啊! sizeof操作符 对象所占内存空间的大小,单位是字节 关键词:char  数组 指针 结构体 sizeof(NULL) 结果为1 1.基本类型占内存大小   32位机     64位机器 类型 字节数       int 4       char 1       指针 4     8 float 4 浮点型     long 4       double 8 双精度浮点型     2.sizeof(指针)  任意

(C/C++)区别:数组与指针,指针与引用

1.数组跟指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变. 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存.指针远比数组灵活,但也更危险. 数组和指针特点的简单比较: 数组 指针 保存数据 保存地址 直接访问数据 间接访问数据,先取得指针的内容,然后以它为地址取得数据 用于存储数目固定且类型相同的数据 通常用于动态数据结构 编译器自动分配和删除