天天看點

2013-7-15學習一些修飾詞的比較

蛇形數組:

//蛇形函數問題

#include<stdio.h>

#include<string.h>

void main()

{

   int i = 0,n,k = 1;

   printf("請輸入N:");

   scanf("%d",&n);  //

   int j = n-1,s[100][100];

   memset(s,0,sizeof(s));  //記憶體初始化

   while(k<=n*n)

   {

       while(i<=n-1&&s[i][j]==0&&k<=n*n) {s[i++][j] = k++;}

       i--;//不然的話上面一行i++之後越過邊界了

       j--;//不然會覆寫邊角的那個數

       while(j>=0&&s[i][j]==0&&k<=n*n)  {s[i][j--] = k++;}

       j++;

       i--;

       while(i>=0&&s[i][j]==0&&k<=n*n)  {s[i--][j] = k++;}

       i++;

       while(j<=n-1&&s[i][j]==0&&k<=n*n)  {s[i][j++] = k++;}

       j--;

   }

   //列印輸出

   for(int x = 0;x<n;x++)

       for(int y = 0;y<n;y++)

       {

           if(s[x][y]<10)

               printf("%d  ",s[x][y]);

           else

               printf("%d ",s[x][y]);

       }

       printf("\n");

}

結果:

const和define的差別:

define不需要指名類型,const隻讀不能修改。const 要做類型判斷

const char *p;

char const *p; 

p指向可以改,*p不可改

char * const p="abc";   *p可以改,但這兒不可改,是在靜态區,初始化必須指向,不然會報錯

char const * const p="abc"  ; p不可改,*p也不可改

const資料開辟在靜态區,在編譯的時候就開辟空間了

引用:int &a=5;  是錯誤的  就類似: int *p=&5;  錯誤

别名是唯一的,一旦起了别名就不可以更改

引用和指針的差別:

1.從記憶體上來講  系統為指針分寸記憶體空間,而引用與綁定的對象共享記憶體空間,系統不為引用變量配置設定内容空間。

2指針初始化以後可以改變指向的對象,而引用定義的時候必須要初始化,且初始化以後不允許再重新綁定對象。

3.是以引用通路對象是直接通路。指針通路對象是間接通路。

4。如果pa是指針,那麼*pa就是引用了。

但是兩者在作為形參的時候非常相似,差別是指針拷貝副本,引用不拷貝。程式如下:

void pt(int * pta,int * ptb)

int *ptc;

ptc=pta;pta=ptb;ptb=ptc;

void ref(int &ra,int &rb)

int rc;

rc=ra;ra=rb;rb=rc;

int a=3;int b=4;

int *pa=&a;int *pb=&b;

pt(pa,pb);

printf("zhizhen: a=%d,b=%d\n",a,b);

ref(a,b);

printf("yinyong: a=%d,b=%d\n",a,b);

const和static差別

const int i=10; //i不可以更改

static int a=10;//可以更改 隻初始化一次

如果把const放在變量類型名前,說明這個變量的值是保持不變的,該變量必須在定義時初始化,初始化後對它進行的任何指派都是非法的。

将static用于一個全局變量,是說明該全局變量隻對定義在同一個檔案中的函數可見。即使在另一個檔案中使用了extern,另一個檔案中的函數也不能通路這個全局變量。

static的第二個含義是用于一個函數前,說明該函數隻能在同一個檔案中調用。

第三個含義是static用于函數的局部變量。它表明該變量的值不會因為函數終止而消失,它會被儲存下來。再次調用該函數時,這個儲存下來的值會用來初始化該變量。

第四個含義就是用于類的成員變量。它表明對類的所有對象,這個資料成員都隻有一個執行個體。這個執行個體被所有對象共有。static的成員變量可以是private、public、protected的。定義和通路的文法也和其他資料成員一樣。

定義類不占存儲空間,隻是定義了類型。

本文轉蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366567,如需轉載請自行聯系原作者

繼續閱讀