鱼C论坛

 找回密码
 立即注册
查看: 5982|回复: 11

一个int型的指针变量存放几个字节的地址???

[复制链接]
发表于 2012-10-20 10:46:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int * pArr;
pArr = (int *)malloc(4 * len);

补充内容 (2012-10-20 10:55):
len = 5哈,pArr返回的是头4个字节地址?还是20个字节中第一个字节的地址?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-20 23:16:01 | 显示全部楼层
返回的是第一个字节的地址
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 10:34:41 | 显示全部楼层
头4个字节一共有4个字节,所以有4个地址。如果把它们看成一个整体,那么这个整体的地址就是该整体所占据的所有地址中最小的那个。所以头4个字节地址和20个字节中第一个字节的地址在值上是相等的。
int * pArr;int占4个字节,所以pArr是指向头4个字节的地址。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 11:25:03 | 显示全部楼层
sizeof(指针变量)一般等于4字节
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-21 12:40:48 | 显示全部楼层

就是头四个字节地址的首地址么?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 17:44:29 | 显示全部楼层
ヤWwwˉЮ‥ 发表于 2012-10-21 12:40
就是头四个字节地址的首地址么?

是的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 17:58:37 | 显示全部楼层
pArr的指针类型是int,当然指向4个字节。那么int(*p)[2]中的p指向什么?这个搞清楚了,你就全明白了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 18:05:06 | 显示全部楼层
#include<iostream.h>

void main()
{
        int *ptr=new int[5],i=0;
        for(i=0;i<=4;i++)
                *(ptr+i)=i;
        for(i=0;i<=4;i++)
        {
                cout<<*(ptr+i)<<endl;
        }
        delete [] ptr;
}//输出的结果是0,1,2,3,4

补充内容 (2012-10-21 18:05):
那么你想知道怎么是指针指向整个动态空间吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-21 22:07:15 | 显示全部楼层
这个……这个 ,写的多了 自然就会了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-22 10:41:36 | 显示全部楼层
消失在黑暗中 发表于 2012-10-21 18:05
#include

void main()

还请赐教,谢谢!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-22 14:02:59 | 显示全部楼层
#include<iostream.h>

void main()
{      
        int(*ptr)[3]=new int[2][3],/*动态定义了6*4字节的内存空间*/i,j,n=0;
        void function(int);
        for(i=0;i<=1;i++)
                for(j=0;j<=2;j++)
                        ptr[i][j]=n++;
        cout<<"输出数组元素:"<<endl;
        for(i=0;i<=1;i++)
                for(j=0;j<=2;j++)
                        cout<<ptr[i][j]<<endl;

        cout<<"ptr指向的类型大小为:"<<sizeof(*ptr)<<"字节"<<endl;/*        (*ptr)[3]之前也有提到过,这里的ptr是指向一维数组的指针(对指针初学者有难度)
        上面输出的结果是12字节,因为ptr指向对半的数组,ptr[0][2]=2,事实上我不可以达到与数组名&a相同功能的指针,出这个题的目的是为了让初学者看清楚什么是指针
        ,但是我试了很多数组指针的办法都不可行。最后还还有一个办法,用结构体或是类*/
        delete [] ptr;

        struct complex
        {
                int a;
                int b;
                int c;
                int d;
                int e;
                int f;
        };
        complex *com=new complex;
        cout<<"com指向的类型大小是:"<<sizeof(*com)<<"字节"<<endl;//输出的结果是24
        cout<<"以下是用指针输入和输出结构体内的数据:"<<endl;
        int *p;
        com->a=11;com->b=22;com->c=33;com->d=44;com->e=55;com->f=66;
        p=(int *)com;
        for(i=0;i<=5;i++)
                cout<<*(p++)<<endl;//输出1,2,3,4,5,6

        delete com;

}

以下是输出的结果:

输出数组元素:
0
1
2
3
4
5
ptr指向的类型大小为:12字节
com指向的类型大小为:24字节
输出结构体内的数据:
11
22
33
44
55
66

Press any key to contnue

补充内容 (2012-10-22 14:03):
还想知道更深的东西,要收费了

补充内容 (2012-10-22 14:04):
还想知道更深的东西,那要收费了,嘻嘻
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-25 08:43:11 | 显示全部楼层
消失在黑暗中 发表于 2012-10-22 14:02
#include

void main()

呵呵 多谢了 收费?你是做培训的么?
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 18:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表