对数组的简单总结

本文深入讲解了一维和二维数组的创建、初始化、使用及运算,包括数组的指针访问方式,并探讨了数组作为函数参数时的特点。
一、一维数组的创建和初始化
1.数组的创建:
type_t     arr_name     [const_n];     type_t是指数组的元素类型,const_n是一个常量表达式
eg:   int arr1[10] ;整型数组
        int *arr2[10]; 指针数组
        int count = 10; int arr3[count];
        char   arr4[10];
        float arr5[1];
        double arr6[20];
注意:int arr[n] 错误,[ ]中要给一个常量,变量不可以
           int arr[ ]={0};表示只有一个数组元素
2.数组的初始化:在创建数组的同时给数组的内容一些合理初始值(初始化)。
eg:   int arr1[ ] = {1,2,3,4};
        char arr2[3] = {'a',98, 'c'};    char arr3[ ] = {'a','b','c'}; (两种写法相同)
        char arr4[ ] = "abcdef";(放有7个元素,最后一个为"\0")
注意:数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初 始化的内容来确定。
二、一维数组的使用
[ ] ,下标引用操作符,它其实就数组访问的操作符。
(1)数组是使用下标来访问的,下标是从0开始。
(2)数组的大小可以通过计算得到。
    int arr[10];    
    int sz = sizeof(arr)/sizeof(arr[0]);
数组在内存中是连续存放的,随着数组下标的增长,元素的地址呈递增规律。
三、一维数组的指针访问
1.指针的初步介绍
指针可以理解为一个变量,是一个专门用来存放地址的一个变量。
在C语言中取出某个变量的地址。
eg:    int n = 10;     &n;   //取出n的地址。
指针变量的定义:
eg:    int (char)(double)  *ptr = NULL;  //定义一个指针变量,初始化为NULL
2.一维数组的指针访问
数组的数组名其实是数组首元素的地址。
通过对数组名+整数的运算,其实可以获取到数组每个元素的地址,可以使用指针来访问数组。
eg:  #include <stdio.h>
       int main()
       {
         int arr[10] = {0};    
         int i = 0;    
         int *p_arr = arr;    
         for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)    
         {
           *(p_arr+i) = i;    
         }
        for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)   
         {        
           printf("%d\n", *(p_arr+i));   
         }    
        return 0;
       }
三、二维数组的创建和初始化
1.   二维数组的创建
eg:   int (char)(double) arr[3][4];
2.二维数组的初始化
eg:   int arr[3][4] = {1,2,3,4};    
        int arr[3][4] = {{1,2},{4,5}};
        int arr[ ][4] = {{2,3},{4,5}};
四、二维数组的使用
1.  二维数组在内存中的存储
二维数组在内存中也是连续存储的。
二维数组的行数可以省略,但列数不可以省略。
2.  二维数组的指针访问
eg:   #include <stdio.h>
        int main()
        {    
           int arr[3][4] = {0};    
           int *p = &arr[0][0];    
           int i = 0;    
           for(i=0; i<3*4; i++)    
           {        
               *(p+i)= i;  (等价于arr[i] = i;)    
           }    
            for(i=0; i<3; i++)    
           {        
               int j = 0;        
               for(j=0; j<4; j++)        
               {            
                    printf("%d ", arr[i][j]);       
               }    
           }    
          return 0;
        }
五、数组的运算
&数组名——数组名表示整个数组,取出来的是数组的地址
sizeof(数组名)——数组名表示整个数组,求的是整个数组的大小
除此之外,所有的数组名都表示首元素的地址
1.一维数组
eg:
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));                     // 6(字节)
printf("%d\n", sizeof(arr+0));                 // 4
printf("%d\n", sizeof(*arr));                    // 1
printf("%d\n", sizeof(arr[1]));                 // 1
printf("%d\n", sizeof(&arr));                   // 4
printf("%d\n", sizeof(&arr+1));               // 4
printf("%d\n", sizeof(&arr[0]+1));           // 4
 
printf("%d\n", strlen(arr));                      // 随机值
printf("%d\n", strlen(arr+0));                  // 随机值
printf("%d\n", strlen(*arr));                     // 代码错误
printf("%d\n", strlen(arr[1]));                  // 代码错误
printf("%d\n", strlen(&arr));                    // 随机值
printf("%d\n", strlen(&arr+1));                // 随机值
printf("%d\n", strlen(&arr[0]+1));            // 随机值
 2.二维数组
eg:
int a[3][4] = {0}; 
 printf("%d\n",sizeof(a));                        // 48
printf("%d\n",sizeof(a[0][0]));                 // 4
printf("%d\n",sizeof(a[0]));                     // 16
printf("%d\n",sizeof(a[0]+1));                 // 4
printf("%d\n",sizeof(a+1));                     // 4
printf("%d\n",sizeof(&a[0]+1));              // 4
printf("%d\n",sizeof(*a));                       // 16
printf("%d\n",sizeof(a[3]));                     // 16
六、数组作为函数参数
获取数组的元素个数
eg:   void bubble_sort(int arr[])
        {    
            int sz = sizeof(arr)/sizeof(arr[0]); ——>(错误)
            …
        }
数组作为函数参数的时候,不会把整个数组的传递过去。实际上只是把数组的首元素的地址传递过去了。
即使在函数参数部分写成数组的形式:  int arr[ ] 表示的依然是一个指针: int *arr 。 
上面代码中的sz最后的值应该是1,而不是数组元素的个数。
























<think>嗯,用户想了解如何在MATLAB中对数数据进行简单显示。首先,我需要回忆一下MATLAB的基本操作。数组显示的话,最简单的应该是直接输入变量名,不加分号就会显示出来。比如a = [1 2 3],然后回车就会显示a的值。 然后,可能需要提到disp函数,这个函数专门用来显示变量的内容,不会显示变量名,适合在脚本中使用。比如disp(a)会输出数组内容,比较简洁。 接下来,格式化输出可能也是需要的。比如用fprintf来更灵活地控制显示格式,比如指定小数位数或者换行符。例如,fprintf('%.2f ', a)可以把数组元素用两位小数显示出来,用空格分隔。 还有,当处理大型数组时,用户可能不想看到全部数据,这时候可以用size函数显示数组的维度,或者用disp显示部分数据,比如disp(a(1:5))只显示前五个元素。 另外,显示特殊类型数组,比如结构体或元胞数组,可能需要不同的方法。比如结构体用disp显示时可能不够直观,可以逐个字段显示,或者用struct2table转换成表格形式更清晰。 最后,可能需要提到一些可视化工具,比如plot函数绘制数组图形,虽然用户问的是简单显示,但稍微提一下可能有帮助。同时,提醒用户注意显示精度的问题,比如format long或format short调整数值显示的小数位数。 总结一下,步骤应该是:直接显示变量、使用disp函数、格式化输出fprintf、处理大型数组的部分显示、特殊类型数组的显示方法,以及可能的可视化建议。还要确保例子清晰,用中文讲解,符合用户的要求。</think>在MATLAB中,对数数据进行简单显示有以下几种常用方法,逐步说明如下: --- ### 1. **直接显示(省略分号)** 在命令行或脚本中,若变量赋值语句末尾不加分号,MATLAB会自动显示结果。 ```matlab a = [1 2 3; 4 5 6] % 直接显示2x3矩阵 ``` 输出: ``` a = 1 2 3 4 5 6 ``` --- ### 2. **`disp` 函数** 用于无变量名的简洁输出,适合脚本中显示内容。 ```matlab b = rand(3); % 生成3x3随机矩阵 disp('随机矩阵内容:') disp(b) % 显示矩阵值,不显示变量名 ``` 输出: ``` 随机矩阵内容: 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575 ``` --- ### 3. **`fprintf` 格式化输出** 精准控制输出格式,适合需要对齐或特定精度的场景。 ```matlab c = [3.1416, 2.7183]; fprintf('圆周率: %.2f,自然常数: %.3f\n', c(1), c(2)) ``` 输出: ``` 圆周率: 3.14,自然常数: 2.718 ``` --- ### 4. **显示部分数据** 对大型数组可截取片段显示,避免命令行被淹没。 ```matlab d = 1:1000; % 生成1到1000的数组 disp('前5个元素:') disp(d(1:5)) % 仅显示前5个元素 ``` 输出: ``` 前5个元素: 1 2 3 4 5 ``` --- ### 5. **特殊数组类型显示** #### (1) **元胞数组** ```matlab cellArray = {'apple', [10,20], magic(2)}; disp(cellArray) % 显示元胞内容 ``` 输出: ``` 'apple' [1x2 double] [2x2 double] ``` #### (2) **结构体** ```matlab student.name = 'Alice'; student.grade = 95; disp(student) % 显示结构体字段 ``` 输出: ``` name: 'Alice' grade: 95 ``` --- ### 6. **调整显示精度** 通过 `format` 命令控制数值显示位数: ```matlab format long % 显示更多小数位 pi % 输出: 3.141592653589793 format short % 恢复默认短格式 pi % 输出: 3.1416 ``` --- ### 7. **可视化辅助显示** 对数值型数组,可结合简单绘图直观展示: ```matlab data = randn(100,1); % 生成100个正态分布随机数 plot(data) % 绘制折线图 title('随机数据分布') ``` --- ### 注意事项 - 若需隐藏输出,在语句末尾添加分号(如 `a = [1,2];`)。 - 对高维数组(如4维),建议使用 `size` 函数查看维度,再选择切片显示。 通过以上方法,可以快速、灵活地查看和分析MATLAB中的数组数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值