数据结构之指针复习
廢話不多說,拿起鍵盤就是干,直接上代碼:?
#include <stdio.h>int main() {double *p;double x = 66.6;p = &x; //x占8個字節,一個字節占8位,一個字節一個地址double arr[3] = { 1.1,2.2,3.3 };double *q;q = &arr[0];printf("%p\n", q); //%p 意思就是以16進制輸出q = &arr[1];printf("%p\n", q);printf("%p\n", arr);while (true){}}輸出結果:?
結論:1,第一個和第三個輸出結果一樣,數組arr保存的是第一個元素arr[0]的地址?,
? ? ? ? ? ?2,double類型占8個字節,每個字節占8位 ,第二個元素的地址=第一個元素的地址+8(逢16進1)
?
?
結論:
1,數組arr存的是數組第一個元素地址,所以數組也是指針
2,arr+1表示arr指針向后移動1位,arr+2表示arr指針向后移動2位
?
通過指針修改? i? 的值,
#include <stdio.h>void f(int *p);int main() {double *p;double x = 66.6;p = &x; //x占8個字節,一個字節占8位,一個字節一個地址double arr[3] = { 1.1,2.2,3.3 };double *q;q = &arr[0];printf("%p\n", q);q = &arr[1];printf("%p\n", q);printf("%p\n", arr);printf("%p\n", arr + 1);printf("%p\n", arr + 2);int i = 100;f(&i);printf("%d\n", i);while (true){}}void f(int *p) {*p = 50; }?結論:&i 表示去變量 i 的地址? ,將 i 的地址給指針變量 p? ,*p就代表了i? ?所以修改 *p的?值就等于修改了變量i的值
總結
- 上一篇: C++ 函数参数的默认值和占位参数
- 下一篇: python函数模块_06.Python