C++基础学习之14 - 再谈指针

本文深入探讨了C++中指针的基本概念及其使用方法,包括指针的内存占用、寻址方式、指针的指针及指针的引用等核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面已经讲过C++指针的概念,指针是一个特殊变量,里面保存了一个内存地址。

        那么指针本身占了多大内存呢? 在32位平台上是 32位(4字节),在64位平台上就是 64 位。

        我们通过代码来看一下指针的寻址方式。

int a[5] = { 1,2,3,4,5 };  
int *p = a;  

for(i=0;i<5;i++) 
{  
    (*p)++;  // 通过(*)取值
    p++;  // 下一个地址
}  
        说白了,指针本身就是一个内存地址,这个地址可以通过变量的 取地址符号(&)来获得:

int nFirstTime = 1;
int nLastTime = 100;
int *p = &nFirstTime; // 取地址

(*p) = 10; // now firstTime = 10
p = &nLastTime; // 重新取地址
        在代码中你可能会遇到这样的概念,即 指针的指针(**)或者指针的引用(*&),来看例子:

char Arr1[16][16]; // 生成16*16的二维数组

int **pArr2 = new int*[16]; // 在堆上声明16*16的数组
for(int i=0;i<16;i++)
{
    pArr2[i] = new int[16];
}
// 通过下标访问
pArr2[i][j];
// 对应删除方式
for(int i=0;i<16;i++)
{
    delete[] pArr2[i];
}
delete[] pArr2;

// 指针的引用
void getName(char*& _name)
{
    _name = "linolzhang";
}
// 指针的指针
void getName(char** _name)
{
    *_name = "linolzhang";
}
char *strName = NULL;
getName(strName);  // now strName = "linolzhang"
getName(&strName);  // 同上
        记住地址的概念,深刻理解一下上面的例子,回头一切了然。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值