zoukankan      html  css  js  c++  java
  • 数组与指针的区别

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5149144.html

    1.数组的分配与释放

    数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名),数组大小:sizeof(数组名)/sizeof(数据类型)。初始化字符数组时要注意字符串结尾处有结尾符‘’。 

    char a[]={"Hello"};//按字符串初始化,大小为6.
    char b[]={'H','e','l','l','o'};//按字符初始化(错误,输出时将会乱码,没有结束符)

    char c[]={'H','e','l','l','o',''};//按字符初始化

    2.指针的分配与释放:

    指针是一种类型,包含其他变量的地址,也有的叫它“地址变量”。指针的类型是说明指针所指向的地址空间的类型。

    申请、释放堆中的指针,使用new 和 delete,动态分配失败,返回一个空指针(NULL)

    指向对象的指针:int *p=new int(0) ;    delete p;(()里面的值是初始化值)

    指向数组的指针:int *p=new int[n];    delete[] p;(n表示数组的大小,值不必再编译时确定,可以在运行时确定)

    指向类的指针:Class *p=new Class;  delete p;(若构造函数有参数,则new Class后面有参数,否则调用默认构造函数,delete调用析构函数)

    指针数组:一个数组里面存放的同类型的指针,如 int *a[10];需要对数组每个元素初始化如:a[0]=new int [n];a[1]=new int [m];释放也要单独释放:delete a[0];delete a[1]

    数组指针:指向数组的指针。1维:int *p=new int[10];delete []p; 2维:int (*p)[10]=new int[10][10];delete[] p; 3维:int(*p)[9][9]=new int [1][9][9];delete []p;

    指针的指针:int **pp=new (int*)[2]; pp[0]=new int[3];pp[1]=new int[4];delete[] pp[0];delete[]pp[1]

    程序验证:

    参考:http://www.cnblogs.com/ForEverKissing/archive/2008/07/21/1247633.html

              http://www.cnblogs.com/csyisong/archive/2010/03/18/1688877.html

  • 相关阅读:
    无向图的邻接表
    tensorflow安装问题:ImportError:DLL load failed找不到指定模块
    《梦断代码》阅读笔记(三)
    《梦断代码》阅读笔记(二)
    《梦断代码》阅读笔记(一)
    个人总结
    第十六周总结
    团队开发冲刺第二阶段(最终日总结)
    第十五周总结
    "百度输入法"评测
  • 原文地址:https://www.cnblogs.com/shrimp-can/p/5149144.html
Copyright © 2011-2022 走看看