Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46584
  • 博文数量: 43
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-19 14:06
文章分类

全部博文(43)

文章存档

2011年(1)

2009年(42)

我的朋友
最近访客

分类: C/C++

2009-07-31 21:52:14

指针
始终记住arr[i]等于*(arr + i);
void指针
c允许把一个类型指针赋给void指针,但c++不行
int* p1;
void* p2;
p2 = p1;
双指针
char **p; //二级指针,指向一个char *型的变量(即字符指针)。
#include ///动态分配存储空间
using namespace std;

int main()
{
        int i,m,n;
        cout<<"Input the m & n:";
        cin>>m>>n;
        //申请 为 a[m][n]
        int **a;
        a=new int *[m];
        for(i=0;i        {
                a[i]=new int[n];
        }
        //释放
        for(i=0;i        {
                delete []a[i];
        }
        delete []a;
        return 0;
}

指针数组
char (*p)[4]; //和二级指针差不多吧,指向带有四个元素的char 型数组的,不过它与char **的区别在于,它的计算(比如指针自增)时定量的,也就是多了个 数组元素是4的信息。
分配空间和delete
p = new char[5][4];
delete []p;
指针数组
char *p[4]; //指针数组,p不是指针, 是个数组名。不过这个数组的元素char*型的,也就是字符指针。
说明
如下
char **p;
char (*q)[4];
char a[4][4];
q = a//正确
p = a//不兼容指针类型转换,警告
如果进行计算,比如输出p[1][0],其实就是*(*(p + 1) + 0),编译器就不知道p + 1实际该加多少,
然而用q的话就知道实际是地址加4个char的大小
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

void display()
{
        int** p;
        int (*q)[4];
        int a[5][4];
        int sum = 0;
        for(int i = 0; i < 5; i++) {
                for(int j = 0; j < 4; j++) {
                        sum = i + j + sum;
                        a[i][j] = sum ;
                        std::cout << a[i][j] << "    ";
                }
                std::cout << std::endl;
        }
        q = a;
        std::cout << **(q + 2) << std::endl;
        std::cout << **(++q) << std::endl;
        std::cout << *a[4] << std::endl;
}
void show()/// 空间分配和释放
{
        char (*p)[4];
        p = new char[3][4];
        strcpy(*p, "hyn");
        std::cout << *p << std::endl;
        delete []p;
}

int main(int argc, char * argv[])
{
        char** p;
        char (*q)[4];
        char a[5][4] = {"hig", "abc", "der", "sdf", "plm"};
        q = a;
        std::cout << *(q + 1) + 1 << std::endl;
        std::cout << a[1] << std::endl;
        display();
        show();
}

阅读(294) | 评论(0) | 转发(0) |
0

上一篇:Enum

下一篇:inline函数

给主人留下些什么吧!~~