• 数组的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
    ", 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
    ", temp);
    	}
    	// 2 如何定义一个函数指针类型
    	{
    		typedef int(*MyPTypeFunc)(int a, int b);
    		MyPTypeFunc  myPfunc;
    		myPfunc = add;
    		temp=myPfunc(4, 6);
    		printf("temp=myPfunc(4, 6)===>%d
    ", temp);
    
    	}
    	//3 如何定义一个 函数指针  (指向一个函数的入口地址)
    	{
    		int(*MyPFunc)(int a, int b);
    		MyPFunc = add;
    		temp=MyPFunc(3, 6);
    		printf("temp=MyPFunc(3, 6)===>%d
    ", temp);
    	}
    	system("pause");
    }
    

      这里的加了typedef 和没有加的区别就是:加了则定义一种类型,没加则是代表的一种表现的形式。

  • 相关阅读:
    IOS中彻底删除mysql方法
    (iOS)Storyboard/xib小技巧
    (iOS)关于GCD死锁的问题
    android-通知Notification
    android-多线程
    android-服务Service
    android-OptionMenu
    android-SQLite 和 Content
    android-数据持久化
    Russia
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6699879.html
Copyright © 2020-2023  润新知