【C 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )
生活随笔
收集整理的這篇文章主要介紹了
【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 语言】指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】指针数据类型 ( 指针类型变
- 下一篇: 【C 语言】指针数据类型 ( 野指针 |