zoukankan      html  css  js  c++  java
  • 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.字符数组常做字符串使用,要有字符串结束符‘’

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

    7.字符串处理函数:

    字符串连接函数:stract()

    ```

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

    ```

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

    字符串复制函数:strcpy()

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

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

    字符串比较函数:strcmp()

    ```

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

    ```

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

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

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

    ```

    strlen(字符串数组名)

    ```

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

    指针

    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)引用应该被初始化,否则会报错

    使用引用过来传递参数

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

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

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

    指针传递参数

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

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

    数组做函数参数

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

    指针数组

    一维指针数组的定义:

    ```

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

    ```

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

    秋来凉风起,无限思远人
  • 相关阅读:
    Ubuntu换源
    如何查看已购买的office密钥
    python的模块放在哪里
    centos7不能启动网卡报No suitable device found for this connection错误
    搭建邮件服务器 使用Postfix与Dovecot
    SSH远程免密码的密钥登录服务(Linux,Linux)
    SSH服务搭建、账号密码登录远程Linux虚拟机、基于密钥的安全验证(Windows_Xshell,Linux)
    apache基础,apache环境搭建,apache的3种使用方式(IP、端口、域名)
    Linux vsftpd服务配置以及三种验证方式以及常见错误解决办法
    使用DHCP动态管理主机地址
  • 原文地址:https://www.cnblogs.com/lalavender/p/10487009.html
Copyright © 2011-2022 走看看