網站首頁 編程語言 正文
1. 指針類型
指針以字節為單位;
指針類型決定了解引用時能訪問的空間的大小;也決定了指針的步長(指針+1走多遠)
2. 野指針
- 指針未初始化
- 指針越界訪問
- 指針指向的空間已釋放
int* test()
{
int a = 10;//野指針
return &a;
}
int main(){
int* p = test();
//test函數里的a是局部變量,出函數時,儲存變量的空間已經還給操作系統了
printf("%d\n",*p);
//此時通過解引用不能再訪問到a;
}
如何規避野指針呢?
- 指針初始化
- 小心指針越界
- 指針指向空間釋放即使置NULL
- 避免返回局部變量的地址
- 指針使用之前檢查有效性
3. 指針的運算
3.1 指針+-整數
int arr[5] = {0,1, 2, 3, 4};
int* p = arr;
int i = 0;
for(i=0; i<5; i++)
{
//printf("%d ",*p);
//p++;
printf("%d ",*p++);//以上兩種寫法相同
}
3.2指針-指針
得到的是中間元素的個數,可以用來求字符串的長度
int my_strlen(char* arr)
{
char* start = arr;
char* end = arr;
while(*end != '\0')
{
end++;
}
return end - start;
}
3.3 指針的關系運算
其實就是指針比較大小。實際在絕大部分的編譯器上是可以順利完成任務的,然而我們還是應該避免這樣寫,因為標準并不保證它可行。
float values[5];
float *vp;
int i = 0;
for (vp = &values[0]; vp < &values[5];)
{
*vp++ = 0;
}
4. 指針數組
存放指針的數組
int a; int b; int c;
int* arr[3] = {&a,&b,&c};
原文鏈接:https://blog.csdn.net/m0_60416282/article/details/125138575
相關推薦
- 2023-01-05 詳解C++中四種類型的轉換_C 語言
- 2022-05-05 Python學習之字符串常用方法總結_python
- 2022-05-13 修復ffmpeg寫文件時的幀率異常問題記錄
- 2022-02-02 【layui】【laydate】設置可以選擇相同的年份范圍
- 2022-06-08 PostgreSQL并行計算算法及參數強制并行度設置方法_PostgreSQL
- 2022-05-04 配置Spring.Net框架開發環境_實用技巧
- 2023-04-06 python?numpy.linalg.norm函數的使用及說明_python
- 2022-06-25 如何利用Pandas刪除某列指定值所在的行_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支