题目分析,高度理解一维二维数组的申请和[]是什么运算符

第0题:

动态申请二维数组并输出非负数和
和负数出现次数
题目分析,高度理解一维二维数组的申请和[]是什么运算符_第1张图片
题目分析,高度理解一维二维数组的申请和[]是什么运算符_第2张图片
思路:输入数组大小,然后申请内存并不对其初始化,提高速度,传入数据到申请的数组中,判断如果数组中有元素小于0对其进行计数,否则加上非0数最后输出答案,释放内存
题目分析,高度理解一维二维数组的申请和[]是什么运算符_第3张图片

第一题:

在这里插入图片描述

解答:
题目分析,高度理解一维二维数组的申请和[]是什么运算符_第4张图片
运行结果:

在这里插入图片描述
在这里插入图片描述
思路分析:
创建长度为20的字符串输入字符串将输入字符串传入我们的QAQ函数中其中我们在函数QAQ中定义了一个指针s用于传入形参。

对于传参的理解:
为什么我们要用*s传入字符串为什么不是char s[]?

因为chars更为简单char s[]和chars其实都是一样的

这是为什么?
我们知道数组其实是一个申请的空间我们可以通过指针申请数组,一维指针可以申请一维数组,二维指针可以申请二维数组,

在这里插入图片描述
其中g为int类型的指针,通过这个式子我们可以用指针去申请数组,一维数组这样
二维数组同理:

题目分析,高度理解一维二维数组的申请和[]是什么运算符_第5张图片
去使用二级指针去申请,其中row和cols代表行和列,
通过一维数组的申请可以知道我们既然数组名是指针那么数组名肯定是有指向的你们数组名指向的是什么?
那肯定是数组的首元素,既然数组名指向我们数组的首元素那么我们这么样访问数组的其他元素?
在数组中大家肯定见过[]符号,那这个说什么运算符?

[] 是数组索引运算符。在C++、C、Java等许多编程语言中,我们使用这个运算符来访问数组中的特定元素。
arr[i] 这种表达式的含义是:访问数组 arr 的第 i 个元素。在这里,i 是索引,它从0开始,一直到数组的长度减1。例如,如果数组 arr 有5个元素,那么i的值就可以是0, 1, 2, 3, 4
我们能够使用 i 这个变量来访问数组中的元素,是因为数组在内存中是连续存储的。
当我们使用 arr[i] 时,计算机会直接跳到内存中相应的位置,读取或写入那个位置的值。这就是为什么我们可以通过改变 i 的值来访问数组中的不同元素。
需要注意的是,尝试访问超出数组长度的索引会引发错误或异常,所以在编程时需要确保不会发生这种情况。

其实在由指针申请的数组中将一个指针指向元素的第3个位置可以通过[-2]来访问数组第一个元素

好了,一维数组这样那么一维数组的形参传入肯定可以用char*表示因为同过对上面一维数组的申请就可以知道数组名是指针,同理加[]也是告诉编译器我们的形参是数组

传入参数后我们是直接对我们数组名进行++即向后移动的操作当我们对数组名所指的位置元素的简单引用就是访问数组元素,如果发现数组在’a’和’z’范围内就对当前元素进行变为大写字母的操作

为上面+32因为我们知道我们的字符串是以ASCII存储为数字,然后有个规律就是小写字母的ASCII比大写大32然后我们减32就变成大写了然后输出我们当前转化后的值对数组名进行先后移动操作,就得出答案

下面是题目的简单题解,调用函数函数传值一般传地址:

题目分析,高度理解一维二维数组的申请和[]是什么运算符_第6张图片

第二题:

在这里插入图片描述

题解:
题目分析,高度理解一维二维数组的申请和[]是什么运算符_第7张图片

运行结果:

在这里插入图片描述
在这里插入图片描述

思路:
输入字符串–>通过函数确定数组大小for循环遍历数组–>如果发现字符串的某个字符是数字字符就输出数字字符,–>如果是字符者返回1
–>如果不是则返回0,–>判断后直接打印出答案就可以。

如果此文对你有帮助的话,欢迎关注、点赞、⭐收藏、✍️评论,支持一下博主~

你可能感兴趣的:(c语言刷题,C语言基础知识,杂谈,开发语言,c++,算法,bug)