c语言 自定义数组语法格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 自定义数组语法格式相关的知识,希望对你有一定的参考价值。

在C语言书中我看到,自定义数组的语法格式很不舒服:
typedef int NUM[100];
NUM n;
我想用以下的形式写,又找不到理论根据,请高手指点!
typedef int[100] NUM;
NUM n;
谢谢!
上机调试的结果证明我的想法是错误的.谢谢!
但是,用NUM n;定义的变量应该怎样使用啊?

你这种用法没有理论依据,也没有得到编译器的支持。

*******************************************

typedef int NUM[100];

NUM n;

之后,n就是一个有100个元素的整型数组。

上面的声明就相当于:

int n[100];
参考技术A 。。。
不舒服忍着不就行了
参考技术B 没有这样的..这是一个标准来的..大家都规定这样写的..不这样写就会报错

C 语言二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )

前言

绘制如下 3 3 3 种二级指针的内存模型 :

// I. 指针数组
char *p1 []= "12", "ab", "34";

// II. 二维数组
char p2[3][4] = "12", "ab", "34";

// III. 自定义二维指针内存
int i = 0, num=3;
char **p3 = (char **) malloc(sizeof(char) * 3);
for(i = 0; i < num; i++)

	p[i] = (char *)malloc(sizeof (char) * 4);
	sprintf(p[i], "%d%d", i + 1, i + 1);





一、指针数组



绘制如下代码内存结构图 :

// I. 指针数组
char *p1[] = "12", "ab", "34";

指针数组 内存结构图 :

在 栈内存 中 , 是一个 指针数组 , 数组中有 3 3 3 个元素 , 都是指针数据类型 ;

指针 指向的 位置 是 全局区 的 常量区 ;





二、二维数组



绘制 二维数组 的内存模型图 :

// II. 二维数组
char p2[3][4] = "12", "ab", "34";

绘制结果如下 : 上述 二维数组 都在 栈内存中 ,

  • 每个 一维数组 都占 4 4 4 字节 ;
  • 一维数组中 , 默认值都为 ‘\\0’ 字符 ;
  • 注意 栈内存 生长方向是 从 高地址 -> 低地址 ;
  • 注意 数组 的内存方向是从 低地址 -> 高地址 , p[0] 在低地址 , p[1] 在高地址 ;
  • 全局区存在 初始化时 涉及到 的 相应字符串 常量 ;





三、自定义二维指针内存



绘制 自定义二维指针内存 的内存模型图 :

// III. 自定义二维指针内存
int i = 0, num=3;
char **p3 = (char **) malloc(sizeof(char) * 3);
for(i = 0; i < num; i++)

	p[i] = (char *)malloc(sizeof (char) * 4);
	sprintf(p[i], "%d%d", i + 1, i + 1);


绘制结果如下 : 栈内存 中 只有一个 二维指针 , 其指向的 一维指针 都在 堆内存中 , 一维指针 也是指向 堆内存 中的数据 ;

注意 指针 指向 的是 内存块的 低地址 , 不要指错了位置 ;

全局区 中的 常量区 中 , 存在初始化的 字符串 常量 数据 ;

以上是关于c语言 自定义数组语法格式的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何自定义数组长度

c语言中,定义一个函数,函数输出结果是一个数组,整个的形式是怎么样的?

C语言新建一个数组的语法

c语言中用户自定义函数的格式是啥?

在c语言中自定义了一个函数,在main中调用时提示找不到标识符,怎么办?

c语言编程利用自定义函数求两个数的和