栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】关于数组的一些小问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】关于数组的一些小问题

 

作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!

 本文为C语言的小事系列,喜欢的同志可以订阅本专栏点→这里这里,都是在下学习时总结的精华,希望对您有所帮助。

 

 开门见山的说:

就是本人关于一些疑难问题的总结

目录

变长数组不能初始化

数组初始化值问题

整形指针与字符指针的字节差别

数组常见跃界问题

二维数组初始化问题


变长数组不能初始化
#include
int main()

{
	int n = 5;
	int arr[n];
	
return 0;
}

 像这样编译代码一般是会报错的,但是这其实并不算一种语法错误

c99标准之前是不支持变长数组的,[]里只能是常量

 c99增加了对变长数组的支持,但普遍的编译器并不支持c99,vs也是如此。

数组初始化值问题
#include
int main()

{

	int brr[5]={ 1,2,3};//不完全初始化,后面的值默认为0
	int crr[5] = { 1,2,3,4,5,6 };//初始化值溢出
	int crr[] = { 1,2,3,4,5,6 };//不指定数组大小,对初始化值自动指定大小
	return 0;
}

    int brr[5]={ 1,2,3};不完全初始化,后面的值默认为0
    int crr[5] = { 1,2,3,4,5,6 };初始化值溢出,编译错误
    int crr[] = { 1,2,3,4,5,6 };不指定数组大小,对初始化值自动指定大小

整形指针与字符指针的字节差别

众所周知:int类型是四个字节,char类型是一个字节。

int*+1,跳了4个字节,char*+1跳了1个字节。

因为在数组中地址是连续的,所以无论是数组还是字符数组。

我们都能通过指针,按照下标顺序打印。

数组常见跃界问题
#include
int main()

{
	int n[] = {0};
	int i = 0;
	for (i; i < 10; i++)
	{
		scanf("%d", n[i]);//跃界代码。
	}

	return 0;
}

 一开始初始化的n数组只有一个元素,只要scanf输入了超过一个元素的话,

代码便会报错,这也是新手常见的数组错误。

C语言中在语法上对越界无法识别,编译器不一定会报错。

二维数组初始化问题

形象一下↓

int arr[  行(横着的),列(竖着的  ) ];

二维数组必须规定列,也就是后面那个。

二维数组会将行先放满变量,再会跳到第二行继续放变量。

调用和一维数组一样使用下标。


哈,谢谢各位同志的阅读,然后呢如果觉得本文对您有所帮助的话,还给个免费的赞吧

    Thanks♪(・ω・)ノ

(期待一下,要是有分享和收藏更好啦)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号