c++数组和指针

发布时间 2023-03-29 00:02:39作者: boyboy!

goto

  • 作用:goto是跳转到循环中标志的地方。

  • 标志语法:FLAG: 调用:goto FLAG;

数组

数组的定义方式

  • 1.数组类型 数组名[数组长度];

  • 2.数组类型 数组名[数组长度]={值,值};//如果数组长度大于值的个数则多的值为零

  • 3.数组类型 数组名[]={ 值 ,值};//可以不用放长度

  • 整个数组访问:sizeof(arr)//数组名是一个常量不可以赋值和修改

  • 一个元素访问:sizeof(arr[0])

  • 数组个数的访问:sizeof(arr)/sizeof(arr[0])

  • 数组首地址的查找:(int )arr

  • 数组一个元素地址为:(int)&arr[0]

  • 二维数组所占的空间为:sizeof(arr)

  • 二维数组第一行所占的空间:sizeof(arr[0])

  • 二维数组第一个所占的空间:sizeof(arr0)

  • 二维数组行数计算:sizeof(arr)/sizeof(arr[0])

  • 二维数组列数计算:sizeof(arr[0])/sizeof(arr0)

     //例如
     int arr[2][2]={
                  {2,4},//第一行个数等于第一行的一个数(1)乘于列数,故可反推列数
                  {5,6}
                    }
    • 二维数组的首地址为:(int)arr

    • 二维数组的第一行首地址为:(int)arr[0]

    • 二维数组的第二行首地址为:(int)arr[1]

    • 二维数组第一个元素的首地址:(int)&arr0//访问元素的时候才需要加入&

    函数

    值传递

    • 值传递不会影响实参,地址传递会影响实参。

    • 方法的变量与main函数的变量可不同定义,但main函数可调用方法的变量

    • 方法中有返回值,可以用

       int sout()
       { return 1000 }
       int main()
       int num=sout();

      函数声明

      • 返回值 变量名(值,值);

      • 声明可以多次但定义只能一次

      函数的分文件编写

      • .h后缀名头文件写声明和#include<iostream>

        using namespace std;

      • .cpp文件放方法,其间 #include<“头文件名.h后缀名”>

      • 另一个.cpp文件放main函数,需加入#include<iostream>

        using namespace std;

#include<“头文件名.h后缀名”>

指针

  • 指针是创建一个空间进行存储地址,访问地址可以找到该地址的值

     int a=10;
     //int *p;
     //p=&a;
     int *p=&a;
     *p//可以访问该地址中变量或修改该值

    指针的空间大小

    • sizeof(int *)

    • sizeof(float *)

    • sizeof(double *)

    • 在32位操作系统下,指针都占用4个字节

    • 在64为操作系统下,指针都占用8个字节

    空指针

    • 空指针是用来初始化指针的。

    • 空指针是不能用来访问的

    const修饰变量

    • const常量指针,指针的指向可以修改,但指针指向的值不可以修改

     const int *p=&a;
    • const指针常量,指针的指向不可以修改,但指针指向的值可以修改

       int *const p=&a; 
       p=&b
      • 两者结合及修饰变量又修饰指针,两者都不可以改

       

      指针与数组

     int arr[3]={1,5,8};
     int *p=arr;//arr是数组的首地址
     *p//利用数组访问第一个元素
     p++//可以访问第二个元素

    可以用指针遍历数组

     for(int i=0;i<10;i++)
     {
     cout<<*p2<<endl;
     p2++;
     ​
     }
    • 指针能节省空间,值传递中当调用类中的值时会复制一份内存浪费地址。