回头看C++的指针和数组

Posted on 2009-10-23 20:55  一有新人  阅读(173)  评论(0编辑  收藏  举报

你会写出如下这样的程序吗?

遗憾的是,今天之前,我会写出这样完全没搞懂指针和数组的弱智程序。

void f(char**p)
{
    ;
}

void main()
{
    
char s[123];
    f(
&s);
}

 

再看下面的分析:

 

#include<iostream>
using namespace std;

void main(void

    
char a[24= "hello";
    printf(
"a=%x\n",a);
    printf(
"&a=%x\n",&a);
    
char *= a;
    printf(
"p=%x\n",p);
    printf(
"&p=%x\n",&p);

输出为:

a=12ff30
&a=12ff30
p=12ff30
&p=12ff2c
Press any key to continue

解释如下:

数组a只关联一片内存区域,即以a开头的区域。数组名a就代表该数组的首地址,所以"a=12ff30  &a=12ff30";

指针关联两片内存区域,一个是指针本身的存储区域,一个是指针指向的存储区域。上例中"&p=12ff2c"为指针本身的地址,"p=12ff30"为指针指向的内存首地址。

 

我的却还是菜鸟,大牛些勿见笑。

 

Copyright © 2024 一有新人
Powered by .NET 9.0 on Kubernetes