当前位置:网站首页>字符数组/字符串数组|数组指针/指针数组/
字符数组/字符串数组|数组指针/指针数组/
2022-08-02 14:13:00 【白U】
数组;
数组的类型 由
- 元素的类型
- 数量
数组的定义决定了数组的类型,元素个数以及元素类型。
语法结构: 类型 数组名 [元素个数]
int Arr [10]
元素的个数必须是整型常量,且必须 >0 .
数组的大小是在编译期确定的,编译系统按照定义为数组分配一段连续的存储单元。(且大小不可改变,所以不可以定义为变量,但C99标准可以)
计算数组大小:sizeof(ar)/sizeof(ar[0]);
//数组大小除以元素类型的大小。才是数组的大小。仍然占一个字节,但是
strlen()`计算出来的是字符串长度,不包括。
char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’} 0的ascll码值和\0相同。因此 被视为字符串。
字符串:凡是由'\0'结尾均为字符串
字符数组:凡是么有'\0'结尾均为字符数组。
当len = strlen(strd),
1,char strd[] = {
'a','b','c','d','e'} 值为5
2,char strd[] = {
'a','b','c','d','e','f','g','h'} 值15
明显错误,是因为它在计算的时候在寻找'\0',因此越界超出,而1式知识运气比较好罢了,刚好等于5
不要再提字符数组的概念!!跳到字符串数组就要想到后面由\0
不能计算其长度,只能计算其大小。
- 数组名是指针,但是却丢失了数组另一个要素:数组的大小,及数组元素的数量。编译器按数组定义时的大小分配内存,但运行时对数组的边界不加检测,这会带来无法预测的错误。
int ar[] = {1,2,3,4,5,6}
ar 代表数组首元素的地址
*ar *(ar+1) *(ar+3)···· (ar+i)
i[ar] 和 ar[]相等, 都会转化为指针
为什么
数组作为函数的参数会退化为指针呢:我们将从时间效率和空间效率分析。
void print_Ar(int br[10]);
void print_Ar(int br[]);
void Printf(int *br , int n);
我们先假设数组作为函数的形参,我们分析一下调用过程;
在传递过程中我们不仅要把数组名传递给形参,还要把数组个数传递给形参
int main()
{
int arr[10] ;
数组名arr 未初始化也就是为赋值,没有存储数据。
int brr[3] = {
11,22,22};
brr 已经初始化
return 0;
}
数组指针:
int *ar[5]
5个元素类型为整型指针的数组
int *ar[5] = {&a,&b,&c,&d} //未定义的部分为 0指针数组 :
int (*pa)[5];
pa是一个指针变量,(能够存放元素个数为5,元素类型为整型类型)的数组的地址
边栏推荐
猜你喜欢
2. Log out, log in state examination, verification code
1.开发社区首页,注册
二叉树的遍历:递归法/ 迭代法/ 统一迭代法(强QAQ)
Unity中事件的3种实现方法
Detailed introduction to the hierarchical method of binary tree creation
【线程安全】用户级,内核级,组合级线程|线程同步的处理(条件变量)|strtok_r(可冲入函数)
Redis common interview questions
第二十五章:一文掌握while循环
2.登录退出,登录状态检查,验证码
4. Publish Posts, Comment on Posts
随机推荐
Unity中事件的3种实现方法
JCMsuite应用:四分之一波片
Based on the least squares linear regression equation coefficient estimation
Evaluate multipath BBR congestion control on ns3
图解MESI(缓存一致性协议)
第三十一章:二叉树的概念与性质
关于推荐系统的随想
tpproxy-tcp透明代理
系统性能和TCP/UDP网络优化-学习大杂烩
C语言函数调用过程-汇编分析
【线程网络】了解线程属性(fork/interview question)
分布式一致性协议-Gossip
创建系统还原点及恢复
EastWave应用:光场与石墨烯和特异介质相互作用的研究
二叉排序树与 set、map
C#实现简单的计算器
饥荒联机版Mod开发——配置代码环境(二)
光波导应用中的真实光栅效应
VirtualLab Fusion中的可视化设置
1.开发社区首页,注册