热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++中的数组和字符串

c++中的数组和字符串原文:https://www.geeksf

c++中的数组和字符串

原文:https://www.geeksforgeeks.org/arrays-and-strings-in-c/

阵列

C 或 C++ 中的数组是存储在连续内存位置的项目集合,可以使用数组的索引随机访问元素。它们用于存储类似类型的元素,因为所有元素的数据类型必须相同。它们可以用来存储原始数据类型的集合,例如任何特定类型的 int、float、double、char 等。另外,C 或 C++中的数组可以存储派生的数据类型,如结构、指针等。
有两种类型的阵列:


  • 一维数组

  • 多维数组

一维数组:一维数组是相同数据类型的集合。一维数组声明为:

data_type variable_name[size]
data_type is the type of array, like int, float, char, etc.
variable_name is the name of the array.
size is the length of the array which is fixed.

注意:数组元素的位置取决于我们使用的数据类型。

下图为阵列示意图:

下面是演示数组遍历的程序:

// C++ program to illustrate the traversal
// of the array
#include "iostream"
using namespace std;
// Function to illustrate traversal in arr[]
void traverseArray(int arr[], int N)
{
    // Iterate from [1, N-1] and print
    // the element at that index
    for (int i = 0; i < N; i++) {
        cout << arr[i] << ' ';
    }
}
// Driver Code
int main()
{
    // Given array
    int arr[] = { 1, 2, 3, 4 };
    // Size of the array
    int N = sizeof(arr) / sizeof(arr[0]);
    // Function call
    traverseArray(arr, N);
}

Output:

1 2 3 4

多维数组:多维数组也称为数组的数组。通常,我们使用二维数组。它也被称为矩阵。我们使用两个索引来遍历 2D 数组的行和列。声明如下:

data_type variable_name[N][M]
data_type is the type of array, like int, float, char, etc.
variable_name is the name of the array.
N is the number of rows.
M is the number of columns.

下面是演示 2D 数组遍历的程序:

// C++ program to illustrate the traversal
// of the 2D array
#include "iostream"
using namespace std;
const int N = 2;
const int M = 2;
// Function to illustrate traversal in arr[][]
void traverse2DArray(int arr[][M], int N)
{
    // Iterate from [1, N-1] and print
    // the element at that index
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cout << arr[i][j] << ' ';
        }
        cout << endl;
    }
}
// Driver Code
int main()
{
    // Given array
    int arr[][M] = { { 1, 2 }, { 3, 4 } };
    // Function call
    traverse2DArray(arr, N);
    return 0;
}

Output:

1 2
3 4

琴弦

C++字符串类在内部使用字符数组来存储字符,但是所有的内存管理、分配和空终止都是由字符串类本身处理的,这就是它易于使用的原因。例如,它被声明为:

char str[] = "GeeksforGeeks"

下面是说明字符串遍历的程序:

// C++ program to illustrate the
// traversal of string
#include "iostream"
using namespace std;
// Function to illustrate traversal
// in string
void traverseString(char str[])
{
    int i = 0;
    // Iterate till we found '\0'
    while (str[i] != '\0') {
        printf("%c ", str[i]);
        i++;
    }
}
// Driver Code
int main()
{
    // Given string
    char str[] = "GeekforGeeks";
    // Function call
    traverseString(str);
    return 0;
}

Output:

G e e k f o r G e e k s

C++中的字符串数据类型提供了各种字符串操作功能。它们是:


  1. strcpy() :用于将字符从一个字符串复制到另一个字符串。

  2. strcat() :用于给定的两个字符串相加。

  3. strlen() :用于求给定字符串的长度。

  4. strcmp() :用于比较两个给定的字符串。

下面是说明上述功能的程序:

// C++ program to illustrate functions
// of string manipulation
#include "iostream"
#include "string.h"
using namespace std;
// Driver Code
int main()
{
    // Given two string
    char str1[100] = "GeekforGeeks";
    char str2[100] = "HelloGeek";
    // To get the length of the string
    // use strlen() function
    int x = strlen(str1);
    cout << "Length of string " << str1
         << " is " << x << endl;
    cout << endl;
    // To compare the two string str1
    // and str2 use strcmp() function
    int result = strcmp(str1, str2);
    // If result is 0 then str1 and str2
    // are equals
    if (result == 0) {
        cout << "String " << str1
             << " and String " << str2
             << " are equal." << endl;
    }
    else {
        cout << "String " << str1
             << " and String " << str2
             << " are not equal." << endl;
    }
    cout << endl;
    cout << "String str1 before: "
         << str1 << endl;
    // Use strcpy() to copy character
    // from one string to another
    strcpy(str1, str2);
    cout << "String str1 after: "
         << str1 << endl;
    cout << endl;
    return 0;
}

Output:

Length of string GeekforGeeks is 12
String GeekforGeeks and String HelloGeek are not equal.
String str1 before: GeekforGeeks
String str1 after: HelloGeek


推荐阅读
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文介绍了一种解决二元可满足性(2-SAT)问题的方法。通过具体实例,详细解释了如何构建模型、应用算法,并提供了编程实现的细节和优化建议。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 在多线程编程环境中,线程之间共享全局变量可能导致数据竞争和不一致性。为了解决这一问题,Linux提供了线程局部存储(TLS),使每个线程可以拥有独立的变量副本,确保线程间的数据隔离与安全。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有