200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指

【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指

时间:2020-06-13 11:39:19

相关推荐

【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指

文章目录

一、指针类型变量 与 指针指向的内存块 概念区别1、指针赋值2、指针运算3、内存赋值4、内存取值5、内存修改注意事项

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

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

给定一个指针类型变量 :

// 定义一个普通整型变量int a = 888;// 声明 指针类型变量// 将整型变量地址赋值给指针类型变量int *p = &a;

1、指针赋值

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

char *p1 = (char *)malloc(100);*p1 = (char *)malloc(100);

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

2、指针运算

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

p + 1

p++

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

3、内存赋值

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

4、内存取值

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

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

5、内存修改注意事项

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

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

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

char *p = "abc";*p = "123";

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。