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(" "); }

     

     

  • 相关阅读:
    React学习 之 阶段性小作品(待办事项_已完成事项 CRUD)
    React 学习之 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定
    mysql 时间戳 今天 昨天 7天 30天 及未来时间
    mysql历史数据自动归档
    配置nginx支持跨域访问
    AWK 简明教程
    shell 生成指定范围随机数与随机字符串
    Linux下Shell的for循环语句
    系统部署安装工具 WinToHDD Enterprise v4.2
    格式工厂 FormatFactory v5.1.0.0
  • 原文地址:https://www.cnblogs.com/sclu/p/11278007.html
Copyright © 2011-2022 走看看