zoukankan      html  css  js  c++  java
  • 数组和数组指针

    1.定义一个数组类型
    void main()
    {
    	typedef int(MyArray)[5];  //定义一个数组数据类型
    	MyArray myarray;  //等于int myarray[5];
    	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
    	{
    		myarray[i] = i + 1;
    	}
    	for (int i=0;i< sizeof(myarray) / sizeof(myarray[0]);i++)
    	{
    		printf("%d ",myarray[i]);
    	}
    	printf("
    ");
    	printf("myarray:%d , myarray+1:%d
    ",myarray,myarray+1);  //myarray为代表首元素地址 步长为4
    	printf("&myarray:%d , &myarray+1:%d
    ", &myarray, &myarray + 1); //&myarray代表数组地址,步长为20
    	system("pause");
    	return ;
    }
    

    2.定义数组指针的三种方法

    void main()
    {
    	typedef int(MyArray)[5];  //定义一个数组类型
    	MyArray *pArray;  //定义一个指针变量 指向数组
    	MyArray myarray;  //等于int myarray[5];  相当于一级指针
    	
    	pArray = &myarray; //pArray指向数组的地址  相当于二级指针  pArray步长为20
    	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
    	{
    		(*pArray)[i] = i + 1;
    	}
    	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
    	{
    		printf("%d ", (*pArray)[i]);
    	}
    }
    //定义声明一个数组指针类型
    void main()
    { typedef int(*PArrayType)[5]; PArrayType pArray; //定义个指针变量 int a[5]; pArray = &a; for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) { (*pArray)[i] = i + 1; } for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", (*pArray)[i]); }
    }
    void main()
    {
    int(*pArray)[5]; //直接定义一个指向数组的 数组指针变量 int a[5]; pArray = &a; for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) { (*pArray)[i] = i + 1; } for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", (*pArray)[i]); }
    }

      

    3.多维数组

    void main()
    {
    	int a[3][5];
    	int num = 1;
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 5; j++)
    		{
    			a[i][j] = num++;
    		}
    	}
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 5; j++)
    		{
    			printf("%4d",a[i][j]);
    		}
    		printf("
    ");
    	}
    	printf("a:%d , a+1:%d",a,a+1);          //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
    	printf("&a:%d , &a+1:%d", &a, &a + 1);  //&a代表二维数组的首地址,步长为4B*3*5=50
    }
    

      

    4.多维数组和指针

    	int a[3][5];
    	int num = 1;
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 5; j++)
    		{
    			a[i][j] = num++;
    		}
    	}
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 5; j++)
    		{
    			printf("%4d",a[i][j]);
    		}
    		printf("
    ");
    	}
    	printf("a:%d , a+1:%d 
    ",a,a+1);          //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
    	printf("&a:%d , &a+1:%d 
    ", &a, &a + 1);  //&a代表二维数组的首地址,步长为4B*3*5=50
    
    
    
    	int(*pArray)[5];  //定义一个指向数组类型的指针变量
    	pArray = a;   //让指针指向a(二维数组第一行的首地址)
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 5; j++)
    		{
    			printf("%4d", pArray[i][j]);   //二维数组的本质是二级指针
              } printf(" "); }

     

     

  • 相关阅读:
    重要的API运算函数
    Chicken的代码解剖 :4 ChickenPawn_Chicken一小部分
    Chicken的代码解剖:5 Chicken中的两个接口及其相关
    项目实例:深投控股star rating评分插件
    项目实例:深投控股JQueryXmlMenu
    编程经验:VS2008注册方法
    编程经验:SQL Server Management Studio使用注意事项
    程序员面试题精选100题(07)翻转句子中单词的顺序
    程序员面试100题精选(8)
    Ogre框架的搭建过程
  • 原文地址:https://www.cnblogs.com/sclu/p/11278007.html
Copyright © 2011-2022 走看看