函式指標和指標函式,陣列指標和指標陣列(糾結的指標啊
2、指標函式 指標函式是指返回值是指標的函式,即本質是函式,定義格式如下:返回型別標示符 *函式名稱(形式引數){函式體}
例題:
#include <iostream> using namespace std; float *find(float (*p)[4],int m){ //p為陣列指標,這樣問題又來了,下面會研究陣列指標 float *pf = NULL; pf = *(p+m);//p是指向二維陣列的指標,加*取一維陣列的指標 return pf; } int main(){ float *find(float (*p)[4],int);//查詢序號為m的學生的四門課程成績 float score[3][4] = {{50,51,52,55},{70,70,40,80},{77,99,88,67}};//定義成績陣列 float *pf = NULL;//定義指標時一定要初始化 int i,m; cout<<"請輸入學生的序號"<<endl; cin>>m; pf = find(score,m); for(i=0;i<4;i++){ cout<<*(pf+i)<<" "<<endl; } system("pause"); }
3、陣列指標:也稱行指標,定義:int (*p)[n];
()優先順序高,首先說明p是一個指標,指向一個整形的一維陣列,這個一維陣列的長度是n,也可以說是P的步長,也就是執行 P+1時,p要跨過n個整形資料的長度。
如要將二維陣列付給指標,英這樣賦值:
int a[3][4];
int (*p)[4]; //該語句是定義一個數組指標,指向含4個元素的一維陣列。
p=a; //將該二維陣列的首地址賦給p,也就是a[0]或&a[0][0]
p++; //該語句執行過後,也就是p=p+1;p跨過行a[0][]指向了行a[1][]
所以陣列指標也稱指向一維陣列的指標,亦稱行指標。
4、指標陣列:
定義 int *p[n];
[]優先順序高,先與p結合成為一個數組,再由int*說明這是一個整型指標陣列,它有n個指標型別的陣列元素。這裡執行p+1是錯誤的,這樣賦值也是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指標變數可以用來存放變數地址。但可以這樣 *p=a; 這裡*p表示指標陣列第一個元素的值,a的首地址的值。
如要將二維陣列賦給一指標陣列:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
這裡int *p[3] 表示一個一維陣列記憶體放著三個指標變數,分別是p[0]、p[1]、p[2]
所以要分別賦值。
這樣陣列指標和指標陣列的區別就豁然開朗了,陣列指標只是一個指標變數,似乎是C語言裡專門用來指向二維陣列的,它佔有記憶體中一個指標的儲存空間。指標陣列是多個指標變數,以陣列形式存在記憶體當中,佔有多個指標的儲存空間。
還需要說明的一點就是,同時用來指向二維陣列時,其引用和用陣列名引用都是一樣的。
比如要表示陣列中i行j列一個元素:
參考:http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html
http://baike.sogou.com/v7627909.htm
相關推薦
C++的拷貝建構函式、operator=運算子過載,深拷貝和淺拷貝、explicit關鍵字
1、在C++編碼過程中,類的建立十分頻繁。 簡單的功能,當然不用考慮太多,但是從進一步深刻理解C++的內涵,類的結構和用法,編寫更好的程式碼的角度去考慮,我們就需要用到標題所提到的這些內容。 最近,在看單例模式,覺得十分有趣,然而如果想要掌握單例模式,就必須掌握這些內容。下
高頻率呼叫的函式一定要保證最優化,慎用除法和餘數(轉)
在近期優化系統的過程中,發現有個函式在高壓力下,竟然佔用13.3%的時間,這個函式內部很簡單,基本就是這樣: id_to_type(id) { int iIndex = id%150000; return g_data[iIndex].c
用C語言中的函式列印乘法口訣表,行數和列數可以任意輸入
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void print_table(int line) { int i = 0;
函式返回多個值,傳入引數和傳出引數
函式包括了除函式名以外還有返回值和形參。 這個形參包括了傳入引數和傳出引數; 傳入引數:就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。 例如 void e
django 一對多的添加記錄create 和save 方法,update 更新和save()方法的區別,查詢API的方法
bubuko 只有一個 pan 單獨 mode dig 萬能 .... .site 轉發之https://www.cnblogs.com/gyh04541/p/7910004.html 查詢api的方法: 表.objects.all() ---[obj1,obj2,..
安裝hadoop和配置hadoop,啟動namenode和設置免密登錄的詳細解析!
啟動namenode和hadoop的配置首先安裝hadoop要安裝好java的開發環境,配置好jdk其實創建一個hadoop的用戶cd到這個用戶的目錄下創建一個apps的目錄。以後所有的東西都解壓進入apps解壓後的目錄中的文件如下這裏lib是本地的庫!bin是自己的操作命令,sbin是啟動命令!etc是配置
列出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排序(用sql語句來表達)。
AR 思路 進行 info family order size table ID 查詢出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排序(用sql語句來表達) 1.創建的表格 2.思路: (1)首先查詢各個部門的平均工資 1 select dept
Android Sutdio的常用快捷鍵和必備外掛,繪製介面和除錯應用
常用快捷鍵 程式碼跳轉 描述:跳轉是為了方便程式碼位置的定位,存在兩種跳轉:在定義處可以跳轉到呼叫處,在呼叫處可以跳轉到定義處。 快捷鍵:Ctrl + 滑鼠單擊 方法間跳轉 描述:從一個類方法跳轉到臨近的一個類方法。 快捷鍵:Alt + Up/Down
Math.round(),增強for迴圈,equals方法和==的區別,,instanceof運算子和三目運算子的用法
1.Math.round() 有這樣一個問題,將數字23.4,23.6轉換成int型,得到的新數字是多少? 事實上直接轉換的話得到的數字都是23。但在我們程式設計的過程中有時候需要對數字進行四捨五入取整,那麼顯然上面的直接轉換就不能實現我們的要求。但好在java裡面給我提供了一個可以實現四捨五入
BTREE索引和HASH索引,聚集索引和非聚集索引
https://www.jianshu.com/p/76530afa13cb https://blog.csdn.net/yifanSJ/article/details/79220044 BTREE索引和HASH索引 1、不同引擎的預設索引 不同的引擎對於索引有不同的支援:Innod
使用Ajax傳遞和接收資料,實現註冊和註冊成功後跳轉
返回狀態資訊實體類省略get和set private String stauts; private String msg; 控制器 @RequestMapping(value = "register", method = RequestMetho
STM32移植cJson和FreeRTOS時,cjson解析和建立失敗問題
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/u013184273/article/details/84870672 一,環境:STM32+cJson+FreeRTOS+Heap_4.c 二,FREERTOS的記憶體:Heap_4 Fre
關於javascript的原型和原型鏈,看我就夠了(二)
溫故 建立物件的三種方式 通過物件直接量 通過new建立物件 通過Object.create() js中物件分為兩種 函式物件 普通物件 仔細觀察如下程式碼 function Foo(name) { this.name = name; } var fo
11.頻域裡的卷積——介紹,傅立葉變換和卷積,快速傅立葉變換(FFT)_1
目錄 介紹 FFT 介紹 我們將繼續討論頻率分析以及如何用頻率分量的概念來研究影象。如果你還記得上次我們講過的基於頻率的影象分解的概念。我們通過給你們看這張照片來回憶它(如圖)。這是著名的Dali圖片,當你在那裡允許高頻影象時,你會看到一個女人在欣賞地中海之類的東
java集合類,List和Set比較,各自的子類比較(ArrayList,Vector,LinkedList;HashSet,TreeSet),Map集合比較
ArrayList,LinkedList,Vector都屬於ListList:元素是有順序的,元素可以重複因為每個元素有自己的角標(索引)|-- ArrayList:底層是陣列結構,特點是:查詢很快,增刪稍微慢點,執行緒不同步:A執行緒將元素放在索引0位置,CPU排程執行緒A停止,B執行,也將元素放在索引0位
集合類:List和Set比較,各自的子類比較(ArrayList,Vector,LinkedList;HashSet,TreeSet)
ArrayList,LinkedList,Vector都屬於List List:元素是有順序的,元素可以重複因為每個元素有自己的角標(索引) |-- ArrayList:底層的資料結構是陣列結構,特點是:查詢很快,增 刪 稍微慢點,執行緒不同步 |-- Linke
Qt總結之二:遍歷資料夾和檔案目錄,並過濾和獲取檔案資訊、字尾名、字首名(二)
前言 需要在特定目錄或磁碟下查詢特定檔案 一、篩選目錄 (一)單一目錄下遍歷,篩選特定檔案 QDir dir("./SaveFiles"); QFileInfoList list = dir.entryInfoList(); (二)裝置所有磁碟中遍歷 QF
、有一個字串,其中包含中文字元、英文字元和數字字元,請統計和打印出各個字元的個數。
char[] c = { '6', 's', 'd', '7', 'g', '文', '中' }; int z = 0; int s = 0; int y = 0; for (char x : c) switch ((int) x / 10) { case 4:
程式設計實現: 李四去海南旅遊定機票,機票的價格受淡季和旺季影響,受頭等艙和經濟艙影響。 假設機
public class Test_17 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請輸入您出行的月份:");int
c++ new operator和operator new,delete operator和operator delete
1 new operator 和 operator new,delete operator 和 operator delete new operator: c++中的關鍵字new,如A *a = new A; operator new:c++中的一個操作符,並且可以被過載