typedef 定义指针数组和数组指针及其使用。

#include<stdio.h>
typedef char arr[2][5];
typedef char *name[5];  // 指针数组
typedef char (*lan)[5];  // 数组指针 

int main()
{
    arr age;
    name named;
    lan land;
    char i;
    char j;
    for(i=0;i<2;i++){
        for(j=0;j<5;j++){
            age[i][j]=i*j+1;
        }
    }

    for(i=0;i<2;i++){
        named[i]=age[i];
    }    

    land=&age;

    for(i=0;i<2;i++){
        for(j=0;j<5;j++){
            printf("aged[%d][%d]=%d named[%d][%d]=%d land[%d][%d]=%d\n",i,j,age[i][j],i,j,named[i][j],i,j,land[i][j]);
        }
    }
}

原文地址:https://www.cnblogs.com/ligei/p/12442712.html

时间: 2024-10-30 16:24:41

typedef 定义指针数组和数组指针及其使用。的相关文章

typedef定义函数类型或函数指针

转载请标明出处: 最近在看redis的代码,发现了有关函数指针的部分,想把它记下来. 在redis中有类似下面的定义,利用typedef 定义了一个新的类型,这种类型是一个函数: typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask); 然后可以用这个类型定义一个指针,这个指针指向一个函数,具体redis中使用如下(具体redis的源码解析,后面的文章中还会提到): ae

1、打印二进制机器码,程序内存分析,大端序小端序,指针数组,数组指针,数组的三种访问方式,typedef,#if-0-#endif,求数组大小,括号表达式

 1.打印二进制机器码(分别表示32位的和64位的) #include <stdio.h> /*按照8位的长度打印一个数值*/ void dis8bit(char val) { int bit = 8; while(bit--) { if(1<<bit&val){ printf("1"); } else { printf("0"); } if(!(bit%4)) printf(" "); } putchar(1

字符数组和字符串指针的定义

今天在看书上的一段代码的时候发现有一段代码有问题,对于那段代码的错误进行一下解释. 并加强一下我们常用的两种定义字符串的方法的一些区别进行一下解释. 书上的错误代码大概如下: #include<stdio.h> void copy(char *x,char *y) { for(;*y!='\0';x++,y++) *x=*y; *x='\0'; printf("%s\n",a); } int main() { char *a="Hello!"; char

C++数组指针、指针数组、函数指针的核心概念

1.什么叫数组指针? 数组指针:一个指向一维或者多维数组的指针. 比如:int * b=new int[10];指向一维数组的指针b ; 注意,这个时候释放空间一定要delete [] ,否则会造成内存泄露,b 就成为了空悬指针.         int (*b2)[10]=new int[10][10]; 注意,这里的b2指向了一个二维int型数组的首地址.         注意:在这里,b2等效于二维数组名,但没有指出其边界,即最高维的元素数量,但是它的最低维数的元素数量必须要指定!就像指向

入职培训笔记记录--day9(1、指针函数与函数指针、函数指针数组 2、malloc memset 3、递归函数 4、结构体 5、共用体---》大小端 6、枚举)

1.指针函数与函数指针.函数指针数组 指针函数:返回值为指针的函数 char *fun() { char str[] = "hello world"; return str; } int main() { char *p = fun(); puts(p); return 0; } 编译时,会出现警告,返回了一个已经被释放掉的内存空间的首地址解决方法:1.static 2.char *str = "hello world"; 3.malloc 注意:使用完后要free

C语言--- 高级指针2(结构体指针,数组作为函数参数)

一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[20];                          char sex;                          int age;                    }Student;     Student stu1 = {"zhangsan",'m',23};  

解析 指针数组,数组指针,函数指针

一 :关于指针和堆的内存分配 指针数组 : 一个数组里放的都是指针,我们把他叫做指针数组 int * a[10]; 由于它是一个数组,他是不能从堆空间里申请空间的. 只能做个循环,每个元素去申请空间,或者每个元素去指向另外的地址空间. 数组指针 : 一个指向一唯或者多唯数组的指针: int * b=new int[10]; 指向一唯数组的指针b ; 一些例子: int (*b2)[10]=new int[10][10]; 注意,这里的b2指向了一个二唯int型数组的首地址. 注意,这里的b2的类

指针数组和数组指针的区别以及main函数

1.C语言中的数组有自己特定的类型 2.数组的类型有元素类型和数组大小共同决定 3.C语言中通过typedef为数组类型重命名 typedef type(name)[size]; 数组指针 1.数组指针用于指向一个数组 2.数组名是数组首元素的起始地址,但并不是数组的起始地址 3.通过将取地址符&作用于数组名可以得到数组的起始地址 4.可通过数组类型定义数组指针: ArrayType* pointer; 5.也可以直接定义:type (*pointer)[n];pointr为数组指针变量名,ty

二、关键词 之 指针数组和数组指针的区别

这两个名字不同当然所代表的意思也就不同.我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了.从英文解释或中文全称看就比较容易理解. 指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针 还要注意的是他们用法的区别,下面举例说明. int* a[4]     指针数组 表示:数组a中的元素都为int型指针 元素表示:*a[i]   *(a[i])是一样的,因

int main (int argc, const char * argv[0]) 中参数的含义;指针数组和数组指针

恩,有的编译器初始化时候会产生这样的参数 argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名 1. 几种C++ 常见的参数种类 int main(void); int main(); int main(int argc, char **argv);   //等价于int main(int argc, char *argv[]),是否等价呢?是不是前一个可以表示任意长度的任意个数组,后一个只是定长的任意个数的数组?见下面 int main(int argc, c