網站首頁 編程語言 正文
數組名與數組起始地址的關系
void show(int *arr,int len) {
cout << "in show(): arr lenth = " << sizeof(arr) << "\n";
for (int i = 0; i < len; ++i) {
cout << arr[i] << " ";
}
cout << "\n";
}
int main()
{
int arr[] = {1,2,3,4,5,6,7};
cout << "in main(): arr lenth = " << sizeof(arr) << "\n";
cout << "in main(): &arr = " << arr << "&arr+1 = "<<&arr+1<<"\n";
show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}
數組名arr表示整個數組的兩種情況
- 在同一作用域下,或者說在同一個函數中,sizeof(arr)表示的是整個數組占用的空間大小;
- 在同一作用域下,或者說在同一個函數中,&arr + 1,表示加整個數組大小。
其余情況都表示數組的起始地址
數組名作為函數參數傳遞時會退化成一根指針,表示數組的起始地址,大小等于4字節,所以就無法求出數組的長度。
小結:數組作為參數傳遞,除了傳遞數組的起始地址,另外一定要傳遞數組的長度,否則可能存在大問題。
數組名為什么代表首地址
對于一個數組,比如int a[4],它的數組名a代表首地址,這是為什么呢,看了很多解釋,感覺都很扯淡,其實如果我們從匯編的角度來看數組,就非常簡單了
數組的0.1.2.3都是偏移地址,而a 就是段地址, 這個段地址的值根 第一個元素的地址是一樣的,所以指向第一個元素,段地址中這跟匯編的尋址方式有 異曲同工的地方,就是這么簡單,a代表一個首地址,然后加上偏移量就可以定位每個數組的地址。
原文鏈接:https://blog.csdn.net/KingOfMyHeart/article/details/107450015
相關推薦
- 2022-04-01 17條提高工作效率的Python技巧分享_python
- 2023-03-03 react?native圖片解析流程詳解_React
- 2022-04-12 Http 請求常見狀態碼報錯(200/404/500)
- 2022-12-14 C++?Boost?PointerContainer智能指針詳解_C 語言
- 2022-05-27 Docker常見命令介紹_docker
- 2022-08-03 C++類與對象深入之引用與內聯函數與auto關鍵字及for循環詳解_C 語言
- 2022-04-02 Docker中Dockerfile制作鏡像的方法步驟_docker
- 2022-06-29 python人工智能tensorflow函數tf.nn.dropout使用方法_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同步修改后的遠程分支