前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )

【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )

作者头像
韩曙亮
发布2023-03-29 21:18:12
发布2023-03-29 21:18:12
3K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、指针类型变量 与 指针指向的内存块 概念区别


指针类型变量 与 指针指向的内存块 概念区别 :

给定一个指针类型变量 :

代码语言:javascript
代码运行次数:0
复制
// 定义一个普通整型变量
int a = 888;
// 声明 指针类型变量
// 将整型变量地址赋值给指针类型变量
int *p = &a;

1、指针赋值

给指针赋值 : 给上述指针变量 p 赋值操作 , 如 p = 0x7F451D12 , 只改变指针变量 p 的值 , 没有改变指针变量 p 原来指向的 内存块 中存储的值 ;

代码语言:javascript
代码运行次数:0
复制
char *p1 = (char *)malloc(100);
*p1 = (char *)malloc(100);

上述操作中 , 第二次赋值 , 指针变量改变了 ; 此时

2、指针运算

指针算术运算 : 对上述指针进行算术运算 ,

代码语言:javascript
代码运行次数:0
复制
p + 1

代码语言:javascript
代码运行次数:0
复制
p++

的计算结果是指针的地址值加上指针类型对应的字节大小值 , 如果是 int 类型的指针 , 则增加

4

字节 ;

3、内存赋值

** 给指针指向的内存赋值 😗* 给上述指针变量 p 指向的内存 进行赋值操作 , 如 *p = 0x7F451D12 , 不会改变指针变量 p 的值 , 只会改变指针变量 p 原来指向的 内存块 中存储的值 ;

4、内存取值

指针指向的内存赋值与取值 :

  • 给内存赋值 : *p 如果在 等号 = 左边 , 则表示给 指针 指向的 内存 赋值 ;
  • 从内存取值 : *p 如果在 等号 = 右边 , 则表示从 指针 指向的 内存 取值 ;

5、内存修改注意事项

修改内存注意事项 : 给指针赋值时 , 要 确保指针指向的 内存 可以修改 , 全局数据区 中的 常量区 的值 不能修改 , 代码区 中的值不能修改 , 堆区 和 栈区 中的值 , 即使能修改 , 也要确保指针是正确的 ;

最容易出错的情况是 , 指针指向 字符串常量 , 强行修改该指针指向的内存 , 会导致出错 ;

下面的代码中 , 就会出现问题 ;

代码语言:javascript
代码运行次数:0
复制
char *p = "abc";
*p = "123";
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、指针类型变量 与 指针指向的内存块 概念区别
    • 1、指针赋值
    • 2、指针运算
    • 3、内存赋值
    • 4、内存取值
    • 5、内存修改注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档