数组的typedef 和函数的typedef
#include<stdio.h>
#include<string.h>
#include<stdlib.h> // 数组指针 语法 梳理
//
//int a[10];// // int add(int a, int b)
{
return a + b;
}
int main()
{
int a[10]; //a代表的是数组首元素的地址 &a代表整个数组的地址 a+1的步长为4 &a+1步长=40 .
//定义一个数组类型
{
typedef int (myTypeArray)[10];
myTypeArray Myarray;
Myarray[0] = 10;
}
//定义一个指针数组类型
{
typedef int(*PTypeArray)[10];
PTypeArray myPArray;
myPArray = a;
//myPArray[0] = 20; 这句话是错误的,因为myPArray相当于二级指针,它是指向一个数组的指针
(*myPArray)[0] = 20;
}
//定义一个指向 数组类型的指针 数组类的指针
{
int(*mypointer)[10];
mypointer = a;
(*mypointer)[0] = 21;
printf("%d\n", a[0]);
} //函数指针语法梳理
//1 如何定义一个函数类型
//2 如何定义一个函数指针类型
//3 如何定义一个 函数指针 (指向一个函数的入口地址) //1 如何定义一个函数类型
int temp;
{
typedef int (MyTypeFuc)(int a, int b);
MyTypeFuc *myfunc;
myfunc = add;
temp= myfunc(2, 4);
printf("temp= myfunc(2, 4)===>%d\n", temp);
}
// 2 如何定义一个函数指针类型
{
typedef int(*MyPTypeFunc)(int a, int b);
MyPTypeFunc myPfunc;
myPfunc = add;
temp=myPfunc(4, 6);
printf("temp=myPfunc(4, 6)===>%d\n", temp); }
//3 如何定义一个 函数指针 (指向一个函数的入口地址)
{
int(*MyPFunc)(int a, int b);
MyPFunc = add;
temp=MyPFunc(3, 6);
printf("temp=MyPFunc(3, 6)===>%d\n", temp);
}
system("pause");
}
这里的加了typedef 和没有加的区别就是:加了则定义一种类型,没加则是代表的一种表现的形式。
数组的typedef 和函数的typedef的更多相关文章
- C/C++函数指针(typedef简化定义)
学习要点: 1,函数地址的一般定义和typedef简化定义; 2,函数地址的获取; 3,A函数地址作为B函数参数的传递; 函数存放在内存的代码区域内,它 ...
- 由typedef和函数指针引起的危机
由typedef和函数指针引起的危机 昨天阅读了大神强哥的代码,发现里面用到了函数指针,也用到的typedef.本来我自以为对这两个概念有一定的认识,但是突然发现这两个东西居然用到了一起!!!!(在一 ...
- typedef 复杂函数指针
下面是三个变量的声明,我想使用typedef分别给它们定义一个别名,请问该如何做? >1:int *(*a[5])(int, char*); >2:void (*b[10]) (void ...
- typedef定义函数类型或函数指针
转载请标明出处: 最近在看redis的代码,发现了有关函数指针的部分,想把它记下来. 在redis中有类似下面的定义,利用typedef 定义了一个新的类型,这种类型是一个函数: typedef vo ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...
- C语言中的声明解析规则——数组,指针与函数
摘要:C语言的申明存在的最大问题是:你无法以一种人们所习惯的自然方式和从左向右阅读一个声明,在引入voliatile和const关键字以后,情况更加糟糕了.由于这些关键字只能出现在声明中,是的声明形式 ...
- javascript 数组的常用操作函数
join() Array.join(/* optional */ separator) 将数组转换为字符串,可带一个参数 separator (分隔符,默认为“,”). 与之相反的一个方法是:Stri ...
- JS中有关数组Array的常用方法函数
Array对象的方法主要有如下几种(我所知道的): concat()连接两个或多个数组,并返回结果,但是值得注意的是该方法并不改变数组本身,而仅仅返回一个数组连接的副本. push()在数组后面添加一 ...
- 在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定
今天调试一个C++程序,在一个函数中定义了一个一维数组,设定数组的大小由函数的输入值来决定. 是这样子的: ]; 然后发现:报错! 报错是这样的: 那么问题来了,在C++中定义数组一定要指定数组大小么 ...
随机推荐
- Css下拉菜单设置
<style type="text/css"> *{margin:0px;padding:0px;}设置所有标签属性<初始化页面属性> #nav{backg ...
- 【ASP.NET】System.Web.Routing - StopRoutingHandler Class
Provides a way to specify that ASP.NET routing should not handle requests for a URL pattern. ex: rou ...
- template render in javascript
art-template for github 中文官方文档
- 17秋 SDN课程 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- Entity Framework Core一键生成实体命令
打开Vs中工具——Nug包管理器——程序包管理控制台 设置启动项目为存储实体模型的类库或控制台 Scaffold-DbContext "数据库连接字符串" Microsoft.E ...
- Spring-MVC依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api& ...
- Centos6.8安装redis(一)
最近有在学习会话共享的配置,其中一种呢是 nginx+redis+tomcat 的会话共享配置,在记录此会话共享配置之前呢先记录下redis等的安装.这篇先简单记录下redis的安装,是其中一种方式, ...
- 1. dubbo概述
dubbo简介: 官网:http://dubbo.io 最大程度进行解耦,降低系统耦合性,可以跨工程,跨项目; 生产者/消费者模式; jdk:1.6以上 maven:3.0以上 国际maven仓库:h ...
- 【SQL Prompt】SQL Prompt7.2下载及破解教程
基本介绍 SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为用户提供唯一合适的代码选择.自动脚本设置为用户提供了简单的代码易读性--这在开发者使用的是不大熟悉的 ...
- C/C++.全文件名全路径名分割拆分分解
1._splitpath ZC:windows api的话 可以使用 PathFindFileNameA.PathFindExtensionA.PathFileExistsA等一系列函数 2.测试代码 ...