Pointer and Array 指標 與 陣列 double *a, b[10]; char name[80], *np;

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
I/O FUNCTIONS 輸入 與 輸出. #include int fclose(FILE *); int feof(FILE *); int fflush(FILE *); int fgetc(FILE *); getchar(); char *fgets(char*, int, FILE*);
3Com Switch 4500 切VLAN教學.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章 CS340100, NTHU Yoshi.
1 Web of Science 利用指引 單元二 瀏覽與處理查詢結果. 2 瀏覽檢索結果 查出的結果,預設以時間排列, 使用者可改變結果的排列方式: 還可以依被引用次數、相關度、 第一作者、刊名、出版年等排序 回到前先查的結果畫面 點選想看資料的完整書目 本館訂購範圍的期刊 全文,便可直接連結.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
: Matrix Decompressing ★★★★☆ 題組: Contest Volumes with Online Judge 題號: 11082: Matrix Decompressing 解題者:蔡權昱、劉洙愷 解題日期: 2008 年 4 月 18 日 題意:假設有一矩陣 R*C,
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
MATLAB 程式設計 第 11 章 多維陣列 多維陣列的定義 在 MATLAB 的資料型態中,向量可視為 一維陣列,矩陣可視二維陣列,對於維 度 (Dimensions) 超過 1 的陣列則均可視 為「多維陣列」 (Multidimesional Arrays , 簡稱 N-D Arrays)
程式註解說明. 2 程式註解格式 塊狀註解 對檔案、 class 、 method 、資料結構、一段程式 …. 等程式區塊 做說明。 第一行的開頭必需為 “/*” 且沒有其他文字,最後一行的開頭 必需以 “*/” 做為結束,在中間每一行的開頭都必需是一個 “*” 。 單行註解 佔據一整行的說明。 以.
Chapter 07 低階程式語言.
第一章 演算法:效率、分析與量級 1.1演算法 1.2發展有效率演算法的重要性 1.3演算法的分析 1.4量級(Order)
第十二章 常用的數學函數. 數字函數 此類函數主要是一些常用的數學函數 定義在 標頭檔 C 提供之數學函數 pow(), sqrt(), exp() log(), log10() ceil(), floor() fabs(), ldexp() fmod(), modf()
資料結構實習-四.
Introduction to Java Programming Lecture 5: Using Java Classes : String & Math Spring 2009.
Introduction to pointers in C/C++. Pointers 特殊變數 存放變數在記憶體中的位址 MinGW C++ 中佔用 4 bytes 間接定址取執法 位址 指標變數 變數內容 變數.
Introduction to Java Programming Lecture 15 Objects and Classes.
第五章 函數與儲存類別. 函數 函數為完成某一次特定任務或工作的小程式 函數的類型 庫存函數 (library functions) 如: scanf() 、 printf() 函數 … 等 此函數為系統所提供可以直接呼叫使用之 自定函數 (user-define functions) 此函數是使用者自行定義之函數.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
:Problem D: Bit-wise Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10232: Problem D: Bit-wise Sequence 解題者:李濟宇 解題日期: 2006 年 4 月 16.
第九章 結構. 結構的宣告 結構 它是由許多不同 ( 或相同 ) 資料型態的變數所組成的 集合,通常利用結構標籤稱呼此集合 struct student { char *name; int score; }; struct 為保留字,表示結構的宣告開始 結構項目需定義於大括號「 { } 」內 結尾需加上分號.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
Introduction to Java Programming Lecture 10 Array I Declaring, Creating, and Initializing Arrays.
7 陣列與搜尋 7.1 陣列 一般資料變數 宣告一維陣列 起始一維陣列 7-4
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
第十章 再論結構. 指標與結構的關係 /* File name: ex10-1a.c */ #include int main() { struct student { char *name; int score; }; struct student st= {"Brian", 97}; struct.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
資料結構實習-一 參數傳遞.
: Efficient Solutions ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11020: Efficient Solutions 解題者:陳宜佐 解題日期: 2007 年 4 月 24 日 題意:給定 M 個 case.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
: A-Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10930: A-Sequence 解題者:陳盈村 解題日期: 2008 年 5 月 30 日 題意: A-Sequence 需符合以下的條件, 1 ≤ a.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
A[0] a[1] pa ???? *pa ppa *ppa Address:4 byte Double:8 byte.
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
資料結構實習-二.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
第 17 章 樣板 17-1 樣板的基礎 17-1 樣板的基礎 17-2 樣板函數 17-2 樣板函數 17-3 樣板類別 17-3 樣板類別 17-4 非型態參數的樣板類別 17-4 非型態參數的樣板類別 17-5 樣板類別的繼承 17-5 樣板類別的繼承 17-6 特化樣板與靜態成員 17-6 特化樣板與靜態成員.
資料型態名稱用途儲存空間儲存值範圍 short 短整數儲存較小的 整數 2 bytes-32,768~32,767 Int 整數儲存整數 16 位元 : 2 bytes 32 位元 : 4 bytes 16 位元 : 32,768~32, 位元 : -2,147,483,648 ~ 2,147,483,647.
Chapter 10 m-way 搜尋樹與B-Tree
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
連續隨機變數 連續變數:時間、分數、重量、……
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
Miscellanea Switch Bitwise operations ?,. break; continue; (example) (example) do { a = getc(stdin); if (a=='q') break; else if (a=='c') continue; n++;
Visual C++重點複習.
資料結構實習-六.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
I/O of C and C++. printf and scanf of C Should add printf (“control string”, exp1, exp2,…) Scanf(“control string”, &var1, &var2,…)
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.
:Count the Trees ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10007:Count the Trees 解題者:楊家豪 解題日期: 2006 年 3 月 題意: 給 n 個點, 每一個點有自己的 Label,
牽涉兩個變數的 Data Table 汪群超 11/1/98. Z=-X 2 +4X-Y 2 +6Y-7 觀察 Z 值變化的 X 範圍 觀察 Z 值變化的 Y 範圍.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
第 8 章 記憶體指標. 8.0 變數、數值、位址 8.1 指標與變數 對 C++ 語言而言,指標( pointers )是存放 變數或陣列的位址,因此也可以藉由指標 間接取得變數或陣列中的值。 對 C++ 語言而言,指標( pointers )是存放 變數或陣列的位址,因此也可以藉由指標 間接取得變數或陣列中的值。
: Simple Minded Hashing ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10912: Simple Minded Hashing 解題者:陳俊達 解題日期: 2008 年 5 月 02 日 題意: 給兩個正整數,長度.
© 2009 Pearson Education, Upper Saddle River, NJ All Rights ReservedFloyd, Digital Fundamentals, 10 th ed Pp 92 Parity Method Pp 94 The parity method.
Presentation transcript:

Pointer and Array 指標 與 陣列 double *a, b[10]; char name[80], *np;

Pointer 指標 指標為正整數 ( 或長正整數 ) 變數,用來存放某特定數態 的位址。 double a, c, *b; // a 是 8-byte 浮點實數, b 是 double 指標 b = &a; // 將 a 的位址存入 b c = *b; // 將 b 所指向的浮點實數存為 c e+05 &a = 8076 &c = 8084 &b 8-byte (*b) &a

Scanf( “ format string ”, list of pointers) int a, *ap; double b, *bp; ap = &a; bp = &b; scanf(“%d %lf”, ap, bp); // same as scanf(“%d %lf”, &a, &b); printf(“a=%d b=%lf\n”, *ap, *bp); // same as printf(“a=%d b=%lf\n”, a, b);

Some Considerations double a=5.0, *ap; ap = &a; =============================== *(&a) = ? &(*ap) = ? &ap = ? printf(“ a = %lf\n”, *ap); printf(“ap = %p\n”,ap); printf(“ %p\n”,&ap); printf(“ap = %lx\n”,ap);

String = Character Array 字串 char fname[80], achr = ’c’, *ap; scanf(“%s”, fname); // fname =“myprog.c” ap = &achr; printf(“%c\n”,*ap); // c ap = fname; printf(“%c\n”, *ap); // m printf(“%c\n”, *(ap+1)); // y printf(“%c\n”,*(ap+2)); // p ……… example

Array is a pointer with fixed address c &achr myprog.c \o fname &ap ap = &achr; ap = fname; ap = &fname[9] ….

Array of various types char sss[80]; int na[20]; float farry[30]; struct {int n; double x;} sttt[5]; sttt[3].n = 1; sttt[3].x = 8.9;

Numeric Array float X[6]; X[0] X[1] X[2] X[3] X[4] X[5] X X+1 X+2 X+3 X+4 X value pointer location X[3] = 5; *(X+3) = 5; X+3; &X[3] ※ (x+1) 代表下一個變數、真正的位置增量看數的型態而定

Array as an argument (example)example double funsum(int, double *, char *); int main() { int k, n=10; double xn[30], sum; char ss[40]; for (k = 0; k<n; k++) xn[k] = 1.0/ (double)(k+1)); sprintf(ss, “pass array dim(%d)”, n); sum = funsum(n, xn, ss); …. return 0; } double funsum(int nt, double *x, char *s) { int k; double summ; printf(“%s\n”,s); for (k=0; k<n; k++) summ = summ + x[k]; return(summ); } 結果 : Pass array dim(10) Sum =

字串列印 char ss[40]; sprintf(ss,”This is a string.”); // store 17 字元 printf(“output = %s\n”,ss); ============================ sprintf(buf, format, variables); buf: 記憶體緩衝區 ( 字串位址 ) 。 format :字串,包含變數輸出格式 ( 與 printf 同 ) variables :每一 % 格式所對應之變數。

Array and pointer 陣列變數本身是一個指標變數 (pointer) 陣列作為幅數傳遞時,傳遞的是位址 (pass by address) 與其他變數傳值不同 (pass by value) 。 所以、在函數中改變陣列元素的值、會直接改變原呼叫函數中的 陣列。 當指標變數被賦予ㄧ位址之後,用法和陣列變數完全相同。 如果指標指向超越陣列定義範圍,會產生 out of range 的錯誤, 情況不穩定。

Honer ’ s method for Polynomial fx = a(n); dfx = 0.0; for (k=n ; k>0 ; k--) { dfx = dfx * x + fx; fx = fx * x + a[k-1]; } Notice: dfx 要先於 fx

牛頓法解根 (example)example f(x) f’(x) x1x2 x1 = xinit; do { fdf = poly(x, a, n); dx = fdf.x(x, a, n)/fdf.y(x, a, n); x1 -= dx; } while ( fabs(dx) > xcrit );

Scheme input(a) Read n Read a[0]-a[n] Return n poly(x,a,n) Horing method Return f&df 1 3,4 2 5,6 main input n, a[0]-a[n] dx = df/f x = x - dx |dx|<xcrit ? end 2 3,4 5,6 1 no yes Read xinit |xinit|>100? Output x yes no IntTwoDouble

Project. 4 Root of polynomial Using Newton’s method found the root of f(x) = x 5 + 2x 4 + 4x 3 + 8x 2 + 3x + 6 with xcrit = xinit = 0.0