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

 

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

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

 

 开门见山的说:

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

目录

变长数组不能初始化

数组初始化值问题

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

数组常见跃界问题

二维数组初始化问题


变长数组不能初始化

#include<stdio.h>
int main()

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

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

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

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

数组初始化值问题

#include<stdio.h>
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<stdio.h>
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♪(・ω・)ノ

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值