当前位置:网站首页>字符数组/字符串数组|数组指针/指针数组/
字符数组/字符串数组|数组指针/指针数组/
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,元素类型为整型类型)的数组的地址
边栏推荐
猜你喜欢

Introduction to MATLAB drawing functions ezplot explanation

implement tcp copa on ns3

Doubled and sparse tables

Based on the matrix calculation in the linear regression equation of the coefficient estimates

1. Development community homepage, register

光栅区域衍射级数和效率的规范

第二十五章:一文掌握while循环

数学工具-desmos 图形曲线

3. User upload avatar

面试汇总
随机推荐
关于分布式的一些知识点
unity Domain Reload & scene Reload 静态变量重置
LITESTAR 4D应用:室内植物照明模拟
光学好书推荐
计算机导论——数据库
audio console无法连接到RPC服务
队列与栈
tcp transparent proxy (IP_TRANSPARENT)
Introduction to MATLAB drawing functions ezplot explanation
Detailed explanation of MATLAB drawing function fplot
【无标题】
5. Transaction management
Unity-Ads广告插件
mininet hosts talk to real internet
第二十六章:二维数组
5款最好用的免费3D建模软件(附下载链接)
深入理解Mysql索引底层数据结构与算法
灵活的区域定义
Qt | 播放音频文件 QMediaplayer
couldn't find 'libflutter.so' --flutter