typedef的学习 数组指针与指针数组的差异
来源:互联网 发布:手机淘宝联盟几号提现 编辑:程序博客网 时间:2024/06/09 16:32
有时候我们会对一些数据类型,根据他的功能来对其命名。我们可以利用 typedef这个函数
typedef的数据类型:
typedef OLD NAME(NEW NAME)
下面举几个例子:
1 利用typedef替换整数类型
typedef int INTGER
INTGER a,b
a=5;
从上的例子可以看书,当用INTGER代替int 以后我们可以用INTGER对变量a,b进行定义
2 利用typedef替换数组类型
typedef char(ARRY20)[20]
ARRY20 a1,a2,a3
从上面的例子可以看到,ARRY20是char[20]数组的别名,注意了别用要紧跟类型后面,所以别名要在数组的长度前面
3 利用typedef替换指针类型
第一种
typedef int*(*PTR_TO_ARR)[4]
*PTR_TO_ARR a1,a2,a3
第二种
typedef int(*PTR_TO_FUNC)(int,int)
(为指针函数更改名字)
举个例子:
typedef int(*PTR_TO_FUNC)(int,int)
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
PTR_TO_FUNC punc=max;//这行代码是在punc函数指针定义的时候直接将max函数的地址赋值给punc
......................}
下面讲下: typedef与#define 宏定义的不同
#define int* PTR_INT
PTR_INT a,b
注意了此时,第二句等同于 int*a ,int b ,a,b是不同的类型
typedef int* PTR_INT
PTR_INT a,b,c;
用了typedef后a,b,c均是常数型指针变量
指针数组与数组指针的区别、
先讲下优先级: ()>[ ]> *
形式的区别:
int *a[3] 表示 这一维数组步长为3 ,这个数组中存放的是指针变量
举个例子
int main()
{
int*a[3];
int p[3]
a++;//a即为这个数组的首地址下移一位,地址到了 *a[1]
for(i=0;i<3;i++)
{
a[i]=p[i]}
int (*a)[3]
这是表示 指针int*a 指向了一个长度为3的数组 *(a+i)可以便利 数组中的元素 也可以 int a[3]; p=a;将数组的首地址赋值给p指针
这是指针数组 与数组指针在内存方面的差异
顺便讲下 用指针表示二维数组的方式
int *(p)[3][4]
可以有如下这样的方式:
*(*(p+i)+j)
- typedef的学习 数组指针与指针数组的差异
- 学习:“指针数组”、“ 数组指针 ”、“函数指针”、“ 函数指针数组”、“指向函数指针数组的指针”
- 数组名和指针变量的差异
- 指针数组与数组指针的使用
- 数组指针与指针数组的区别
- 数组指针与数组元素的指针
- 数组指针与指针数组的区别
- 数组指针与指针数组的区别
- 数组指针与指针数组的区别
- 数组指针与指针数组的区别
- 数组指针与指针数组的区别
- 数组指针与指针数组的区别
- 指针数组与数组指针的认识
- 指针数组 与 数组指针 的分析
- 指针数组与数组指针的区别
- 指针数组与数组指针的区别
- 二维数组的指针与指针数组
- 指针数组与数组指针的区别
- mysql DDL DML
- 并发新特性—阻塞队列和阻塞栈
- C头文件编写基本规则
- hdu-5532 Almost Sorted Array(最长单调不xx序列)
- 夜间模式
- typedef的学习 数组指针与指针数组的差异
- githubdesktop入门(一):入门及单人项目创建及删除
- 追踪 Netty 异常占用堆外内存的经验分享
- bzoj 4999: This Problem Is Too Simple! 树链剖分+线段树
- 基于CentOS7.3安装Zabbix3.2手记
- pandas读取csv文件
- HDU 1036 Average is not Fast Enough! (水题)
- unity mesh的自定义创建
- javascriptinterface与java交互在android4.2以下版本的解决方案