数组与指针

数组与指针 

参考网络文档《C语言要点总结》

1> 数组与数组指针:

  int matrix[3][10];
  int *mp = matrix;  //非法的,因为matrix并不是一个指向整型的指针,而是一个指向整型数组的指针
  int (*p)[10];      //声明指向数组的整型指针;
  p = matrix;
  val = (*p)[3];     //与matrix[0][3]的值同


2>  array_name和&array_name的异同: 前者为指向数组中的一个元素的指针;后者为指向整个数组的指针;两者指向的地址相同。

  int month[4];  
  int (*pm)[4];    //声明指向一个数组的指针   
  pw = &month;     //pw的值和week值相同
  int calendar[12][31]; //数组元素类型为:拥有31个整型元素的数组

3>  数组名的值是一个指针常量,sizeof()数组名时,其返回整个数组的长度,而不是指针的长度。

  int calendar[12][31];  
  int (*monthp)[31] = calendar;  
  size = sizeof(calendar[4]);  //size = 31*4=124;   
  size = sizeof(monthp);       //size = 4; 


4> 数组的外部声明:extern int month[], 不能声明:extern int *month;


5> 常用的C变量的定义方式:
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

6> 测试程序

void laji()
{
    int num[] = {0,1,2,3,4,5,6,7,8,9};
    printf("sizeof(num)=%d\n", sizeof(num));

    char str[] = "0123456789";
    printf("sizeof(str)=%d\n", sizeof(str));

    char str1[] = {'0','1','2','3','4','5','6','7','8','9'};
    printf("sizeof(str1)=%d\n", sizeof(str1));

    int (*ptoint)[10] = #
    printf("sizeof(ptoint)=%d, (*ptoint)[9]=%d\n", sizeof(ptoint),(*ptoint)[9]);

    char (*ptostr)[11] = &str;
    printf("sizeof(ptochar)=%d, (*ptochar)[9]=%c\n", sizeof(ptostr),(*ptostr)[9]);

    int *p = num +5;
    printf("p[-1]=%d, p[0]=%d, p[1]=%d\n",p[-1], p[0], p[1]);
    printf("num[5]=%d,5[num]=%d\n",num[5],5[num]);
    return;
    
}  

运行结果:

sizeof(num)=40
sizeof(str)=11
sizeof(str1)=10
sizeof(ptoint)=4, (*ptoint)[9]=9
sizeof(ptochar)=4, (*ptochar)[9]=9
p[-1]=4, p[0]=5, p[1]=6
num[5]=5,5[num]=5

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【标题】"语音识别的一个matlab程序"是一个与语音处理和模式识别技术相关的项目,它使用MATLAB编程语言实现。MATLAB是MathWorks公司开发的一种数值计算和数据可视化环境,广泛应用于工程、科学和数学领域,尤其在信号处理和机器学习方面有很强的功能。 【描述】提到的"在一个网站看到,大家分享一下"表明这是一个社区共享的资源,可能来源于一个在线论坛或编程交流平台。这样的共享行为旨在促进技术交流和学习,让其他对语音识别感兴趣的用户能够参考、学习和改进代码。 【标签】"语音识别"是这个项目的关键词,意味着该程序涉及将人类语音转化为文本或命令的过程。语音识别技术的核心是将音频信号转换为可理解的数据,这通常包括预处理、特征提取、模型训练和匹配等步骤。 在提供的【压缩包子文件的文件名称列表】中,我们可以推断出这个MATLAB程序的组成部分: 1. `demo.m`:通常是演示脚本,用于展示程序的主要功能和用法,用户可以通过运行这个文件快速了解程序的工作原理。 2. `.p` 文件(melfb.p, mfcc.p, vqlbg.p, disteu.p, test.p, blockFrames.p, train.p):这些是MATLAB的编译函数文件,可能包含特定的算法实现,如梅尔频率倒谱系数(MFCC)提取、声学建模、距离计算、训练和测试等功能。例如: - `melfb.p` 可能实现了梅尔滤波器组,用于对语音信号进行频谱分析。 - `mfcc.p` 可能负责MFCC的计算,这是语音识别中常用的特征提取方法。 - `train.p` 和 `test.p` 可能分别对应模型的训练和测试过程。 3. `Read Me.txt`:通常包含关于如何使用、配置和运行程序的说明和指导。 4. `www.pudn.com.txt`:可能指向源文件的下载地址或发布者的信息,PUDN(太平洋下载网)是一个提供各类资源下载的网站。 这个MATLAB程序可能涵盖了语音识别的完整流程,包括预处理、特征提取、模型训练和评估。通过运行`demo.m`,用户可以体验整个识别过程,并可根据源代码深入了解语音识别的实现细节。对于学习和研究语音识别技术的人来说,这是一个宝贵的实践资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值