1. 程式人生 > 實用技巧 >學習第24天

學習第24天

C語言

  1. 陣列和多為陣列、

  2. 指向多維陣列的指標和指標變數、

    1. 陣列名代表陣列的首地址、

    2. int a[3][4];
          	int b, c;
          	for (b = 0;  b< 3; b++)
          	{
          		for (c = 0; c < 4; c++)
          		{
          			a[b][c] = 16;
          		}
          	}
          	int* d;
          	d = (int *)(a + 1);//(int *)是強制轉換的意思、指向第一行的首地址、
          	*d = 51;// a[1][0]賦值成51
          	d++;//走4個位元組 即a[1][1]
          	*d = 91;//將a[1][1]賦值成91
      
  3. 指標陣列和陣列指標、

    1. 陣列中的每個元素都是個指標、並定義了每個元素的指標變數

    2. 指標陣列

    3. int a[3][4];
         		int b, c;
         	for (b = 0; b < 3; b++)
         	{
         		for (c = 0; c < 4; c++)
         		{
         			a[b][c] = 16;
         		}
         	}
         	a[0][3] = 91;
         	int *d[4];
         	d[0] = &a[0][0];
         	d[1] = &a[0][1];
         	d[2] = &a[0][2];
         	d[3] = &a[0][3];
         	for (c = 0; c < 4; c++)
         	{
         		printf("c =%d\n", *(d[c]));
         	}
      }
      
    4. 陣列指標

        	1. 一維陣列指標
                  	2. 
      
      int (*d)[4];//一個指標變數、指向含有4個元素的一維陣列
      	
      	int a[4];
      	int b, c;
      	for (b = 0; b < 4; b++)
      	{
      		a[b] = b;
      	}
      	d = &a;  //使用地址符& a和&a 的地址相同
      	int* e;
      	e = (int*)d;//(int*)強制轉換、
      	for (b = 0; b < 4; b++)
      	{
      		printf("e=%d\n", *e);
      		e++;
      
      	}
      
      1. 二維陣列、

      2.      	int(*d)[9];
             	int a[6][9];
             	int b, c;
             	for ( b = 0; b <6; b++)
             	{
             		for ( c = 0; c < 9; c++)
             		{
             			a[b][c] = b + c;
             		}
             	}
             	d = a;//二維陣列可以直接賦值給陣列指標、
             	int	*e;
             	e = (int *)d;
             	for(b = 0; b < 6; b++)
             	{
             		for (c = 0; c < 9; c++)
             		{
             			printf("%d    ", *e);
             			e++;
             		}
             		printf("\n--------------------------------\n");
             	}
             	d++;//跳了40位元組
             	e = (int*)d;