程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C和指針小結,指針小結

C和指針小結,指針小結

編輯:C++入門知識

C和指針小結,指針小結


C和指針

相關基礎知識:內存的分配(譚浩強版)

1、整型變量的地址與浮點型/字符型變量的地址區別?(整型變量/浮點型變量的區別是什麼)

2、int *p,指向整型數據的指針變量。

3、通過指針變量訪問整型變量。

4、*p :指針變量p指向的存儲單元(變量)

5、p = &a——>> *p = *&a

6、用指針作函數參數

7、調用函數中,由於虛實結合是采用單向的“值傳遞”方式,只能從實參向形參傳數據,形參值的改變無法回傳給實參。

8、引用一個數組元素可以用(1)下標法(2)指針法(占內存小,運行速度快)

9、指針提高效率在那些方面?(內存,運行時間??)

10、如果指針變量p已指向數組中的一個元素,則p+1指向同一數組中的下一個元素。

11、用指針變量作函數形參接受數組地址。數組指針和指針數組的區別

1 #include"iostream" 2 using namespace std; 3 int main() 4 { 5 void sort(int *p,int n); 6 int a[5],i; 7 cout<<"input array:"<<endl; 8 for(i=0;i<5;i++) 9 cin>>a[i]; 10 cout<<endl; 11 sort(a,5); 12 cout<<" the sorted array:"<<endl; 13 for(i=0;i<5;i++) 14 cout<<a[i]<<" "; 15 cout<<endl; 16 return 0; 17 } 18 19 void sort(int *p,int n) 20 { 21 int i,j,k,temp; 22 for(i=0;i<n-1;i++) 23 { 24 k=i; 25 for(j=i+1;j<n;j++) 26 if(*(p+j)<*(p+k)) k=j; 27 temp=*(p+k); 28 *(p+k)=*(p+i); 29 *(p+i)=temp; 30 } 31 } View Code

12、一個int占多少個字節?原文鏈接

13、實參和形參的結合有一下4種形式:

實參 形參 數組名 數組名 數組名 指針變量 指針變量 數組名 指針變量 指針變量

14、實參數組名a代表一個固定的地址,或者說是指針常量,因此其值不可改變;形參數組名是指針變量,可以改變。

      //  a++ //語法錯誤,不可改變

15、字符串與指針。字符串數組/字符串變量/字符指針 存放字符串。

1 //test_3 指針存放字符串 2 #include<iostream> 3 using namespace std; 4 // #include<string> //字符串變量 5 int main() 6 { 7 char str1[]="I Love C++",str2[20],*p1,*p2; 8 p1=str1; 9 p2=str2; 10 for(;*p1!='\0';p1++,p2++) 11 *p2=*p1; 12 *p2='\0'; 13 p1=str1; 14 p2=str2; 15 cout<<"str1 is "<<p1<<endl; 16 cout<<"str2 is "<<p2<<endl; 17 return 0; 18 } View Code

16、函數與指針。函數的入口地址就稱為函數的指針。

  1)、用函數指針調用函數

    函數類型 (*變量名)(函數形參表)

1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int max(int x, int y); 7 int (*p)(int,int); 8 int a,b,m; 9 p=max; 10 cin>>a>>b; 11 m=p(a,b); 12 13 cout<<"max is "<< m<<endl; 14 return 0; 15 } 16 17 int max(int x,int y) 18 { 19 int z; 20 if (x<y) 21 z=y; 22 else 23 z=x; 24 return(z); 25 } View Code

  2)、用指向函數的指針作函數參數。

  3)、返回指針值的函數:指針函數。

    類型名 *函數名(參數列表);int *a( int x,int y);

17、

   1)、指向常量的指針(不允許通過指針變量修改它指向的對象的值)

     const 類型名 *指針變量名

   2)、常指針(指定指針變量的值為常量,即指針變量的指向不可改變)

      類型名 *const 指針變量名

        Tips:必須在定義是初始化,指定其指向。

           指針變量的指向不可改變,但指針變量的指向變量的值可以改變。*p2=12;//合法

           注意(const和*的位置)。const在*後面,請與定義指向常變量的指針變量的形式比較。

   3)、指向常量的常指針(指針變量指向一個固定的對象,該對象的值不能改變)。

     const 基本類型名 *const 指針變量名

18、void指針類型

19、引用與指針 

    為什麼用引用?

      主要是把它當做函數參數,以擴充函數傳遞數據的功能。

        (1)將變量名作為實參和形參。值傳遞是單向的,實參傳給形參,形參改變不影響實參的值。

            因為在調用函數時,形參和實參不在同一存儲單元。

        (2)使用指針變量做形參,實現兩個變量的值互換。 

        (3)以引用作為形參,在虛實結合時建立變量的引用,使形參名作為實參的引用,即形參成為實參的引用。

using namespace std; int main() { // const int a=100,b=10; void swap(int *p1,int *p2); // void swap(int &p1,int &p2); int a=10,b=100; int *pointer_1,*pointer_2,*p; pointer_1=&a; pointer_2=&b; cout<<a<<" "<<b<<endl; swap(pointer_1,pointer_2); // swap(*pointer_1,*pointer_2); //*pointer_1=20; // if (a<b) // { // p=pointer_2; // pointer_2=pointer_1; // pointer_1=p; // } cout<<a<<" "<<b<<endl; cout<<*pointer_1<<" "<<*pointer_2<<endl; return 0; } void swap(int *p1,int *p2) // void swap(int &p1,int &p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; // // int temp; // temp=p1; // p1=p2; // p2=temp; } View Code

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved