C/C++:指针

为 什 么 指 针 要 有 类 型 ? {\red{为什么指针要有类型?}}

因为指针有自增自减运算,只有指针有类型时,指针加1就是向后移动一个类型对象的空间。


内 存 管 理 {\red{内存管理}}

全 局 静 态 区 : {\green{全局静态区:}} 全局变量,静态变量

常 量 数 据 段 : {\green{常量数据段:}} 常量

栈 : {\green{栈:}} 编译器使用的临时变量

堆 : {\green{堆:}} 程序员管理的内存

int main(){
	// 栈
    char a1[] = "abc";  
    char a2[] = "abc";
    const char b1[] = "abc";  
    const char b2[] = "abc";
    // 常量
    char *c1 = "abc"; 
    char *c2 = "abc";
    const char *d1 = "abc";  
    const char *d2 = "abc";
    // 地址
    cout<<(a1==a2)<<endl;
    cout<<(b1==b2)<<endl;
    cout<<(c1==c2)<<endl;
    cout<<(d1==d2)<<endl;
    cout<<(c1==d1)<<endl;
    return 0;
}

输 出 : {\orange{输出:}} 0 0 1 1 1

栈 变 量 地 址 都 是 不 同 的 , 常 量 地 址 会 根 据 内 容 优 化 {\green{栈变量地址都是不同的,常量地址会根据内容优化}}


关 于 通 过 指 针 修 改 常 量 : {\red{关于通过指针修改常量:}}

char *p = "abc";
p[0] = 'b';

编 译 不 会 错 误 , 运 行 错 误 {\orange{编译不会错误,运行错误}}

编译只会检查类型,语法。

运行错误是因为,当指针试图修改常量区时则抛出错误。


关 于 t h i s 指 针 {\red{关于this指针}} this

静态成员函数无this指针

友元函数无this指针


示 例 : p [ 0 ] = = ∗ ( p + 0 ) {\red{示例:p[0] == *(p+0) }} p[0]==(p+0)

char *str[] = {"Welcome","to","Fortemedia","Nanjing"};
char **p = str + 1;
str[0] = (*p++) + 2;
str[1] = *(p+1);
str[2] = p[1] + 3;
str[3] = p[0] + (str[2] - str[1]);
printf("%s\n",str[0]);
printf("%s\n",str[1]);
printf("%s\n",str[2]);
printf("%s\n",str[3]);

输 出 : {\orange{输出:}}

“”

“Nanjing”

“jing”

“g”

分 析 : {\green{分析:}}

pointerA

pointerB

pointerC

pointerD

最 后 : {\orange{最后:}}

pointerE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值