关于二维数组和二维数组管理字符串的辨析

前提概要

这是大一鼠鼠的第一篇博客,在学指针的时候时常很晕,听老师讲的很清楚,但是自己一动手敲,老是不明原理,不知道为啥,所以想花时间整理一下,可能里面用语不专业,还有可能存在错误,欢迎大家来指正!

二维数组以及二维数组管理字符串


一.前提条件

明确“ * ”符号的用途

  1. 指针声明:用于定义指针变量

  2. 解引用符:获取指针变量的值

知道字符串数组的特性,获得第一个地址,可以全部输出

二.区分各种情况

首先,放一个代码在下面,这是鼠鼠实验的代码(想展示一个思考的过程,当时就把自己想到的全部情况试了一下,所以会比较没逻辑)

#include<iostream>
using namespace std;

int main()
{
    char s[4][10]{ "student","STUDENT" };//请输出,地址,一个内容和一个指定的字母
    cout << s << endl;//s[0][0]的地址
    cout << s[0] << endl;//student
    cout << *s << endl;//student,隐式转换为s[0][0],字符串可以接连输出
    cout << s[1] << endl;//STUDENT
    cout << *(s + 1) << endl;//STUDENT,隐式转换为s[1][0],字符串的特性,可以接连输出
    cout << s[0][0] << endl;//s
    cout << *(s)+1 << endl;//tudent,注意容易出错,先隐式转换为s[0][1],在输出
    cout << *(s + 1) + 1 << endl;//TUDENT,先隐式转换为s[1][1],在输出
    cout << *(*(s)+1) << endl;//t,*(s)+1已经是s[0][1]的地址,在*则直接输出该内容,不会持续输出
    cout << *(*(s + 1) + 1) << endl;//T

    int arr[3][4]{ 1,2,3,4,5,6,7,8,9,10,11,12 };
    cout << arr << endl;//arr[0][0]的地址
    cout << *arr << endl;//arr[0][0]的地址
    cout << arr[0] << endl;//arr[0][0]的地址
    cout << arr[0][0] << endl;//arr[0][0]的值
    cout << **arr << endl;//arr[0][0]的值
    cout << **(arr + 1) << endl;//arr[1][0]的值
    cout << *(arr)+1 << endl;//arr[0][1]的地址
    cout << *(*(arr)+1) << endl;//arr[0][1]的值
    cout << *(*(arr + 1) + 1) << endl;//arr[1][1]的值
    cout << *(*(arr)+1) + 1 << endl;//arr[0][1]+1的值
    return 0;
}
其他二维数组管理字符串的二维数组说明
arrarr[0][0]的地址arr[0][0]的地址
*arrarr[0][0]的地址arr[0] [0]的地址(但是输出内容)其他数组只解了一层,还有一层没解;字符串的数组的特性可以全部输出
**arrarr[0][0]的值arr[0][0]的值对于字符串,*arr已经到了a[0][0],让它可以输出了,在来一次的话,就会只取arr[0][0]的值
*(arr+1)arr[1][0]的地址arr[1][0]的地址(但是会输出内容)
*(arr)+1arr[0][1]的地址arr[0][1]的地址(但是会从a[0][1]开始输出内容)
*(arr+1)+1arr[1][1]的地址arr[1][1]的地址(从arr[1][1]开始输出内容)
**(arr+1)arr[1][0]的值arr[1][0]的值
**(arr)+1arr[0][1]的值arr[0][1]的值
**(arr+1)+1arr[1][1]的值arr[1][1]的值
* (*(arr+1)+1)arr[1][1]的值arr[1][1]的值

这些就是目前了解的全部了

总结来说,字符串数组和其他的相似,只不过它拥有自己的特性,要着重区分各种符号的含义,一个个分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值