1. 程式人生 > >C++ 指標(任何一個指標本身的型別都是unsigned long int型)

C++ 指標(任何一個指標本身的型別都是unsigned long int型)

1.指標陣列: 即 陣列的元素是指標型;

例:int*pa[2];

明明是一維的指標陣列,竟當作二維陣列用。

  1. //利用指標陣列存放單位矩陣
  2. #include <iostream>
  3. usingnamespace std;  
  4. void main()  
  5. {  
  6.     int line1[]={1,0,0}; //宣告陣列,矩陣的第一行
  7.     int line2[]={0,1,0}; //宣告陣列,矩陣的第二行
  8.     int line3[]={0,0,1}; //宣告陣列,矩陣的第三行
  9.     int* p_line[3];//宣告整型指標陣列
  10.     //對指標陣列元素賦初值
  11.     p_line[0]=line1;  
  12.     p_line[1]=line2;  
  13.     p_line[2]=line3;  
  14.     //輸出單位矩陣
  15.     cout<<"Matrix test:"<<endl;  
  16.     for(int i=0;i<3;i++) //對矩陣每一行迴圈
  17.     {  
  18.         for(int j=0;j<3;j++)//對陣列元素迴圈
  19.         {   
  20.             //明明是一維的指標陣列,竟當作二維陣列用
  21.             cout<<p_line[i][j]<<" "
    ;   
  22.         }  
  23.         cout<<endl;  
  24.     }  
  25. }  

輸出結果:

Matrix test:
1 0 0
0 1 0
0 0 1

2.指標型函式
當函式的返回值是地址時,該函式就叫指標形函式,又叫返回指標的函式。

宣告形式:資料型別* 函式名( )

指標型函式的使用(串連線)

  1. //指標型函式的使用(串連線)
  2. #include <stdio.h>
  3. char *my_cat(char *p1, char *p2)  
  4. {  
  5.     staticchar
     a[160],*p;  
  6.     p=a;  
  7.     while (*p1 != '\0') *p++=*p1++;  
  8.     while (*p2 != '\0') *p++=*p2++;  
  9.     *p=*p2;  
  10.     return a;  
  11. }  
  12. void main()  
  13. {  
  14.     char s1[80],s2[80];  
  15.     printf("\n請輸入第一串字元: ");  
  16.     //注意:scanf和cin在輸入字串時,遇到空格就終止,而gets 不會。
  17.     gets(s1);  
  18.     //cin >> s1;
  19.     //scanf("%s", s1);
  20.     fflush(stdin);  
  21.     printf("\n請輸入第二串字元: ");  
  22.     gets(s2);  
  23.     //cin >> s2;
  24.     //scanf("%s", s2);
  25.     printf("\n連線結果: \n");  
  26.     printf("\n第一串在前第二串在後: %s \n",my_cat(s1,s2));  
  27.     printf("\n第二串在前第一串在後: %s \n",my_cat(s2,s1));  
  28. }  
執行結果:

請輸入第一串字元: dalian
請輸入第二串字元: i love you
連線結果:
第一串在前第二串在後: daliani love you
第二串在前第一串在後: i love youdalian

3.指向函式的指標

3.1指向函式的指標

宣告形式:  資料型別 (*函式指標名) ( 形參表);

含義: 資料指標指向的是資料儲存區;而函式指標指向的是程式程式碼儲存區。函式名就是地址。


3.2  指向函式的指標陣列:   指向函式的指標可組成陣列。

        宣告形式;   資料型別 (*函式指標名[ ] )( 形參表);


  1. /************************************************************************ 
  2. 練習:寫一個程式,根據使用者的輸入資料算出結果: 
  3. 只寫出四種運算就可以。 
  4. 例如: 
  5. 1 + 2 = 3 
  6. 1 * 2 = 2 
  7. 1 –2 = -1 
  8. 1 / 2 = 0 
  9. **************************************************************************/
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. typedefint (*pFun[])(int,int);  
  13. int add(int,int);  
  14. int sub(int,int);  
  15. int mul(int ,int);  
  16. int divide(int,int);  
  17. void main()  
  18. {  
  19.     pFun pfun = {mul,add,NULL,sub,NULL,divide};  
  20.     //也可以這樣:int (*pfun[])(int,int) ={mul,add,NULL,sub,NULL,divide};
  21.     int item1,item2;  
  22.     int result;  
  23.     char op;  
  24.     do
  25.     {  
  26.         printf("Please input :\n");  
  27.         fflush(stdin);  
  28.         scanf("%d %c %d",&item1,&op,&item2);  
  29.         result = pfun[op-'*'](item1,item2);    //用到了是 + - * /  的ASCII特性
  30.         printf("%d %c %d = %d \n",item1,op,item2,result);  
  31.         printf("try again ? please input y\\n\n");  
  32.         fflush(stdin);  
  33.         scanf("%c",&op);  
  34.     } while(op == 'y');  
  35. }  
  36. int add(int a,int b)  
  37. {  
  38.     return (a+b);  
  39. }  
  40. int sub(int a,int b)  
  41. {  
  42.     return (a-b);  
  43. }  
  44. int mul(int a,int b)  
  45. {  
  46.     return a*b;  
  47. }  
  48. int divide(int a,int b)  
  49. {  
  50. 相關推薦

    C++ 指標任何一個指標本身型別unsigned long int

    1.指標陣列: 即 陣列的元素是指標型; 例:int*pa[2]; 明明是一維的指標陣列,竟當作二維陣列用。 //利用指標陣列存放單位矩陣 #include <iostream> usingnamespace std;

    初學指標輸入兩個整數,由大到小輸出

    #include <iostream> using namespace std; int main() { void Swap(int *p1,int *p2); int a,b; cout<<"please enter a and b"<<endl; c

    指向陣列的指標二維指標

    char (*a)[N];//指向陣列的指標      a = (char (*)[N])malloc(sizeof(char) * N * m);   printf("%

    C語言結構體、列舉型別型別定義

    結構體的定義 1、`struct 結構體名 { 成員型別 成員名; … }; 2、省略結構體名 struct { 成員型別 成員名; ... }結構體變數名; 成員可以是其他已定義結構體的型別,但不能是自己結構體的型別,可以是自己結構體的指標。 定義

    指標與陣列的關係,指標運算,指向指標指標二維指標

    #include<iostream> using namespace std; int main() { int a[5] = {0,1,2,3,4}; int *p = a; cout << a[1] << endl &

    連結串列中 指向 節點結構體指標指標二重指標原題目為pta上查詢倒數k個位置上的數字

    #include<stdio.h> #include<stdlib.h> typedef struct list{ int num; struct list *next; }List ,*LIST; LIST createlist(LIST *L,

    C語言變數的定義和型別的本質

    學習程式設計開發的一個非常重要的概念是:一定要理解任何變數、函式原則上都是一塊塊大小各異的記憶體,而型別則是我們和系統對這塊記憶體含義的約定。 拓展: 很多初學者對變數的定義理解模糊,比如 int a; 這個語句的唯一正確的理解應該是:申請一塊名叫a的內容,而且

    Python——property使一個方法看起來就像類屬性一樣

    一定要註意了 函數返回 exce 函數 蘋果 調用 prop 存在 ice """ 裝飾器property: 使一個方法看起來就像類屬性一樣 """ #例子1 class A: def __ini

    260. 只出現一次的數字 III建立一個字典+一種我不會的思路

    參考:https://blog.csdn.net/wem603947175/article/details/82117675 這道題很簡單,用字典的方法做的,但是我的字典實現超過時間限制。對比如下: (學習(*^▽^*)) # 通過,優於我的字典存取 # class Solution(

    2016年ACM/ICPC大連賽區 CJAVA高精度求sqrt(5)+威佐夫博弈

    題目連結:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5747 題意:除了資料範圍為10^100次方以外

    C語言getchar、_getch、gets、putchar函式的比較

    getchar函式:格式為getchar() 此函式沒有引數,表示從鍵盤輸入一串字元但每次只讀取第一個字元,返回值為int型(第一個字元的ASCII碼)。可以定義一個字元變數儲存這個字元。如果外層巢狀迴圈讀取則從緩衝區內一位一位讀取(將第一個字元刪除,字串左移)。 _getch

    hdu2521一個區間因子個數最多的那個數

    /**/ #include <cstdio> #include <cstring> #include <cmath> #include <cctype> #include <iostream> #include <algorithm&

    哥德巴赫猜想:任何一個>=4之偶數,可以表示成兩個奇質數之和.

    任何一個>=4之偶數,都可以表示成兩個奇質數之和. 分析思路: 1.給定一個範圍,找出這個範圍裡面的所有質數(用空間換時間,效能提高),將其儲存到一個數組中 2.使用迴圈,將這個範圍 和 質數陣列 傳入 一個方法,判斷是否成立。找出所有大於4的偶數

    朱曄和你聊Spring系列S1E8:湊活著用的Spring Cloud一個實際業務貫穿所有元件的完整例子

    本文會以一個簡單而完整的業務來闡述Spring Cloud Finchley.RELEASE版本常用元件的使用。如下圖所示,本文會覆蓋的元件有: Spring Cloud Netflix Zuul閘道器伺服器 Spring Cloud Netflix Eureka發現伺服器 Spring Cloud Net

    Oracle 匯出表結構含列名、資料型別、欄位備註註釋匯出成Excel

    oracle表結構涉及到幾個關鍵的系統表: cols –系統表  user_col_comments –表名、列名、說明  user_tab_comments –表名、型別、說明  user_objects – 字典表檢視  真正

    Delphi多執行緒的OnTerminate屬性附加一個關於臨界區執行緒同步的例子

      首先看TThread原始碼中關於OnTerminate的程式碼: ? 1 2 3 4 5 public .... property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate; ... end;

    POJ 2117 去掉一個割點的求最多連通分支

    #include<cstdio> #include<cstring> #include<vector> #include<algorithm> using namespace std; const int maxn=10000+10; int n,m;

    Java 之路 (十六) -- 泛萬用字元、型別擦除、泛的限制

    7. 萬用字元 萬用字元,即 “?”,用來表示未知型別。 萬用字元可用作各種情況:作為引數,欄位或區域性變數的型別;有時也作為返回型別;萬用字元從不用作泛型方法呼叫、泛型類例項建立或超型別的型別引數。 7.1 上限有界的萬用字元 使用上限萬用字元來放

    C. Line擴充套件歐幾里得求不定方程的解

    time limit per test 1 second memory limit per test 256 megabytes input standard input outp

    matalb k-means函式使用方法一個很好的k-means參考部落格

    首先得說,雖然matlab提供了KMeans函式,但是matlab的KMeans聚類好慢,真的好慢!      K-means演算法是硬聚類演算法,是典型的基於原型的目標函式聚類方法的代表,它是資料點