C藝術篇 3-1 指標與一維陣列(1)
我們先來看指標與一維陣列的關係,例題如下:
從輸出結果得知,arr是陣列名,它是指標常量,而ptr是指標變數。
arr表示此陣列第一個元素的地址,即arr等同於&arr[0]。
arr可以使用指標變數的*表示符號,如*arr等同於arr[0],*(arr+1)等同於arr[1],依次類推。
在2-1中介紹過
int *ptr = &x;
其實是下列兩條語句的組合
int *ptr;
ptr = &x;
可以理解為 ptr就是地址,當本題將陣列地址給ptr時候, 把ptr當為陣列,所以ptr[i]表示的是值,而ptr+i表示的是地址。
同理ptr也可以使用指標變數的[]表示符號,如目前ptr所指向變數地址的值為ptr[0],其等同於*ptr,而ptr[1],等同於*(ptr+1),依次類推。
再來看範例:
從輸出結果得知,pi+1;只是將目前的pi往下移到下一個元素的地址,它並沒有覆蓋pi。
而pi++;不僅將目前的pi移到下一個元素的地址,而且還將此新值覆蓋pi/我們可以對指標變數pi做++的動作,但是不可以對陣列名i做++的動作。
當指標、自增(++)運算子或自減(--)運算子,及*這三個運算子在同一語句時,要注意++的作用點在哪裡。
相關推薦
C藝術篇 3-1 指標與一維陣列(1)
我們先來看指標與一維陣列的關係,例題如下: 從輸出結果得知,arr是陣列名,它是指標常量,而ptr是指標變數。 arr表示此陣列第一個元素的地址,即arr等同於&arr[0]。 arr可以使用指標變數的*表示符號,如*arr等同於arr[0],*(arr+1)等同於arr[1],依次
圖解陣列指標與多維陣列(附:為什麼指標加一,地址不一定加一)
這裡不是單純討論什麼是陣列指標,什麼是指標陣列,而是在掌握了一些知識後再回頭看看陣列指標與陣列到底怎麼理解。(陣列指標:指向陣列的指標。指標陣列:指標構成的陣列) 先放上一道題: 答案是10,20,30。 雖然是很常見的題,對於一個剛開始學C語言可能就可以做出來,但
python+numpy建立“真正準確的”一維陣列: (1,)而不是(n, )
numpy好像沒有直接的方法建立一維陣列 import numpy as np number = np.array((1,10)) print(number.shape) number = np.zeros(10) print(number.shape) 可以看到這裡並不能生
Python 將多維資料轉為一維陣列 (總結)
import operator from functools import reduce a = [[1,2,3], [4,6], [7,8,9,8]] print(reduce(operator.add, a)) [1, 2, 3, 4, 6, 7, 8, 9, 8]a =
Java 基礎之(十一)一維陣列(補充)
陣列的複製 在程式中,經常需要複製一個數組或一個數組的一部分。這種情況下可能要去嘗試用賦值語句(=),如下所示: int[] a = {1,3,5,7}; int[] b = new int[5]; b = a; 該語句並不能將a引用的陣列內容複製給b
C語言之指標與二維陣列
指標,其實就是地址,可以指向一塊自己分配大小的空間。陣列即是多塊一位的空間的線性排布。二維陣列,雖然在人文定義的感覺上有了面的理解,但實際在記憶體中也是一維的線性空間。 對於討論二維陣列,首先我們應該先討論一維陣列與
C ++ 指標 | 指標與二維陣列_5
指標與二維陣列 根據上面的圖,我現在寫一些語句,我們一起來判斷輸出值是多少!! int (*p)[3] = B; print B; 這個會列印多少? 思考一下。。。。。。。 。。。 。。。 。。。 列印: 400 print *B;
指標與一維整型陣列
1) 通常情況下,定義一個數組,int a[5]={1,2,3,4,5};定義一個指標,int *p=a; a與p都表示&a[0];而&a表示的地址與a和p在數值上一樣;但a和 p都表示四位元組記憶體塊的地址;而&a表示整個陣列的地址,有20個位元組; p+1將地址值
圖解c/c++多級指標與“多維”陣列
本文來源於https://www.cnblogs.com/chenyangyao/p/5222696.html,複製發表僅便於個人學習。 宣告:本文為原創博文,如有轉載,請註明出處。若本文有編輯錯誤、概念錯誤或者邏輯錯誤,請予以指正,謝謝。 指標與陣
指標與一維二維陣列的關係
指標與陣列的關係: 指標與變數的光系: 陣列是一塊連續的同類型空間 首組名:是首地址 陣列指標:可以存放多個指標的陣列 定義:型別*陣列名【長度】; 【】規定使用者空指標作指標陣列的結束元素標記, 取元素:下標法 指標法 優先順序:[ ] > * 指標與二維陣列的關係: 定義二
指標與二維陣列練習-文字排版(C程式設計進階 第5周)
程式設計題#3:文字排版 來源: POJ (Coursera宣告:在POJ上完成的習題將不會計入Coursera的最後成績。) 注意: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 給一段英文短文,單詞之間以空格分隔(每個單詞包括其前後緊鄰的標點
C語言指標——對普通變數的指標操作和對陣列(常量)的指標操作
我們知道,每一個變數都有一個記憶體位置,每一個記憶體位置都定義了可使用連字號(&)運算子訪問的地址,它表示了在記憶體中的一個地址。 我們喜歡在程式中使用指標代替陣列,因為變數指標可
lua中,多維陣列與一維陣列的相互轉換
探究多維陣列與一維陣列的轉換是有實際意義的, 如: 1、給定一個立方體內座標、一個順序,問此座標在立方體內按此順序數,在第幾個; 2、給定一堆物體,按某一順序放在立方體的各座標上,問最後一個會放在何處? 那麼,三維要如何轉為一維陣列呢? 最容易想到的方式:維護一個遞增變數,然後遍歷,
指標和多維陣列(C Primer Plus)解釋
討論最簡單的二維陣列形式: int array[4][2]={{2,4},{6,8},{1,3},{5,7}}; 1. 我們知道,陣列名同時代表陣列首元素的地址。array 是這個二維陣列的名字,array 也是這個二維陣列的首元素的地址。 注意array 這個二維陣列
指標7(指標與二維陣列)
先來道例題 #include<stdio.h> int main() {int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}}; int *p,i,j; p=&a[0][0]; printf("\n"); for
二維陣列與一維陣列定義型別的對比;
int(*p)[4]:指向一個長度為4的整型陣列的指標,陣列指標; int *p[4]:儲存指標的陣列,指標陣列; int *pFun():返回指標的函式,指標函式; int (*p)():指向函式的指標,函式指標; 一維陣列表示的型別: 二維陣列表示的型別:
C語言程式設計基礎— 一維陣列 (程式設計實現從鍵盤輸入20個整數,統計非負數個數,並計算非負數之和。)
程式設計基礎—一維陣列 (程式設計實現從鍵盤輸入20個整數,統計非負數個數,並計算非負數之和。) #include<stdio.h> int main() { int a[20] ; int k=0,sum=0,i; for (i=0;i<20
redis開發與運維筆記(1)
1、Redis特性與優點 速度快。redis所有資料都存放於記憶體;是用C語言實現,更加貼近硬體;使用了單執行緒架構,避免了多執行緒競爭問題。Redis使用了單執行緒架構和IO多路複用模型(epoll作為多路複用技術的實現,非阻塞IO)來實現。每次客戶端的請求都會經過傳送命
指向指標的指標與二維陣列的區別
int main(){ int a[2][3]={{1,2,3},{4,5,6}}; int **p=a; cout<<**p<<endl; } 以上程式碼有沒有問題? 由於p是指向指標的指標,p指向一個int *型
《C語言及程式設計》實踐專案——一維陣列初步
【專案1 - 陣列大折騰】(1)建立一個有20個元素的整型陣列,通過初始化,為陣列中的前10個元素賦初值,然後通過鍵盤輸入後10個元素的值,從前往後(從第0個到第19個)輸出陣列中元素的值,每5個元素換一行。int main( ) { int a[20]={...};