C语言数组括号里是字母,C语言数组去掉了数组名后面的中括号是什么意思

本文通过几个示例探讨了C语言中数组与指针的使用方式,特别是int和char类型数组的不同行为,包括如何正确引用数组元素及格式化输出等问题。

/*****************************************************************************************

我自己做了一个测试,但是还是有几点不懂的地方,代码在下方

测试结果:

1、int型数组如果去掉了中括号就是第一个元素的地址

2、char型数组如果去掉了后面的中括号就能够正常格式化输出

hello world,如果单独输出第一个元素的话,就会自动结束运行

问:

1、如果数组去掉了后面的中括号的话就是第一个元素的地址的话,

那①处(下面代码标注)为什么不是输出第一个元素的地址而是输

出hello world

2、如果我想要显示第一个字符,方法如第②处那样,点击运行之后,

跳出来的窗口就会自动停止工作,为什么不是显示第一个字符而

是停止工作

3、如果char型要去掉一个中括号的话,那么第③处的代码1处应该

是显示hello,代码2处应该是显示world,但是输出结果却不是我

想的那样(代码最后有输出结果),为什么此处的输出不是我想的那样

4、问题写在文章最末的说明里

*****************************************************************************************/

#include "stdio.h"

void main()

{

int a[]={1,2,3,4,5,6,7,8,9};

char s[]="hello world";

char ss[][5]={"hello","world"};

//输出a

printf("%d\n",a);

//输出a的地址

printf("%d\n",&a);

//输出a的第一个元素的地址

printf("%d\n",&a[0]);

//①格式化输出字符

printf("%s\n",s);

//②错误代码

//printf("%s\n",s[0]);                    //程序停止工作,但代码编译未报错

//③验证猜想

//代码1

printf("%s\n",ss[0]);

//代码2

printf("%s",ss[1]);

}

/*********输出结果*****************

1703708

1703708

1703708

hello world

helloworldm

worldm

*********************************/

/**************说明***************

输出结果最后两行最后的m是随机乱码,有

时候会是y,有时候会是x,有时候会是空白

为什么会出现乱码

********************************/

### C语言数组中括号的使用 #### 定义数组的一般形式 在C语言,定义数组需遵照特定语法结构,其基本表达方式为 `dataType arrayName[length];`[^1]。这,`dataType`表示数据类型;`arrayName`代表数组名称;而`length`则指明该数组所能容纳元素的数量。 #### 单维数组实例解析 对于单维度数组而言,创建过程相对直观简单。比如声明一个名为`a`、长度为4且各成员均为整型数值(int)的数组可写作: ```c int a[4]; ``` 初始化操作同样支持两种模式——指定大小并赋初值或仅提供初始列表让编译器自动计算尺寸: ```c // 明确给出容量及默认填充序列 int a[5] = {1, 2, 3, 4, 5}; // 编译期推断所需空间量级 int b[] = {10, 20, 30}; ``` #### 多维数组说明 当涉及到多维情况时(如二维甚至更高),只需依次增加方括号内的索引数目即可完成相应层次上的扩展。下面的例子展示了三维整形矩阵`c`的具体构建方法: ```c // 声明了一个具有两层子集每层含三个小组每个小组又分别含有四个整数项的大集合 int c[2][3][4]; // 初始化一个多维数组 int d[][3] = { {1, 2, 3}, {4, 5, 6} }; ``` 值得注意的是,在某些特殊情况下还可以利用指针来间接实现动态分配内存从而形成变长数组的效果,像这样: ```c // 创建指向六个整型变量地址位置的指针构成的一维向量 int *d[6]; // 或者更复杂些的情况 int (*e[7])(int, char); ``` 以上代码片段中的`*`符号表明这些实体实际上是指向其他对象类型的指示符而非单纯存储固定值的位置。 #### 访问数组元素的方式 访问某个具体下标的项目通常借助于一对尖括号包围起来的正整常量作为偏移参数传递给目标容器名之后的形式达成目的。例如获取上面提到过的`a`的第一个成分可以这样做: ```c printf("%d\n", a[0]); ``` 同样的逻辑也适用于嵌套更深的数据结构体内部节点读取/修改动作执行上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值