将字符串写入结构体变量中。定义对象数组和数组

将字符串写入结构体变量中,主要涉及到结构体中字符数组(或指针)的使用。

char data[] = "June 14";  //data是一个字符数组
char *data = "June 14";   //data是一个字符指针
  1. 声明为数组时,可以修改存储在date中的字符。声明为指针时,date 指向字符串字面值,字符串字面值是不可以修改的。
  2. 声明为数组时,date是数组名。声明为指针时,date是指针变量,这个指针变量可以在程序执行期间指向其他字符串。
  3. 如果希望可以修改字符串,那么就要创建字符数组来存储字符串,只是声明指针变量 char *p是不够的。在把 p 作为字符串使用之前,需要把 p 指向一个字符数组。如
  4. char str[LEN + 1],*P;
    P = str;
  5. 当使用字符数组时,数组的大小是固定的,一旦定义就不能改变。你需要确保不会超出这个大小。
  6. 当使用字符指针时,你可以动态地分配任意大小的内存来存储字符串,但这需要你手动管理内存(分配和释放)。

一、使用字符数组

假设你有一个结构体,它包含一个字符数组来存储字符串:

#include <stdio.h>  
#include <string.h> // 用于strcpy等字符串处理函数  
  
struct MyStruct {  
    int id;  
    char name[64]; // 假设名字不会超过63个字符(最后一个位置留给'\0')  
};  
  
int main() {  
    struct MyStruct person;  
  
    // 直接使用strcpy将字符串复制到name数组中  
    // 注意:必须确保源字符串不会超出目标数组的大小  
    strcpy(person.name, "John Doe");  
  
    // 也可以使用strncpy来防止溢出,但需要注意它会填充'\0'直到n-1个字符(如果源字符串较短)  
    // strncpy(person.name, "Jane Smith", sizeof(person.name) - 1);  
  
    person.id = 1;  
  
    printf("ID: %d, Name: %s\n", person.id, person.name);  
  
    return 0;  
}

二、使用字符指针

如果结构体中使用的是字符指针而不是字符数组,那么你需要动态分配内存来存储字符串,或者使用已经存在的字符串(注意字符串的生命周期)。

#include <stdio.h>  
#include <stdlib.h> // 用于malloc和free  
#include <string.h>  
  
struct MyStruct {  
    int id;  
    char *name; // 字符指针  
};  
  
int main() {  
    struct MyStruct person;  
  
    // 动态分配内存给name,注意要包括'\0'的空间  
    person.name = (char *)malloc(64 * sizeof(char)); // 分配64个字符的空间  
    if (person.name == NULL) {  
        // 处理内存分配失败的情况  
        return 1;  
    }  
  
    strcpy(person.name, "Alice Johnson");  
  
    person.id = 2;  
  
    printf("ID: %d, Name: %s\n", person.id, person.name);  
  
    // 使用完毕后,释放分配的内存  
    free(person.name);  
  
    return 0;  
}

一、对象数组

let students = [  
    {  
        id: 1,  
        name: "张三",  
        age: 20,  
        grade: "大一",  
        interests: ["编程", "阅读"]  
    },  
  
    {  
        id: 3,  
        name: "王五",  
        age: 19,  
        grade: "大一",  
        interests: ["篮球", "电影"]  
    }  
];

console.log(students[0].name); // 输出: 张三 

二、c++定义一个对象数组

#include <iostream>  
#include <string>  
  
class Person {  
public:  
    std::string name;  
    int age;  
  
    // 构造函数  
    Person(std::string n, int a) : name(n), age(a) {}  
  
    // 显示Person信息的成员函数  
    void display() const {  
        std::cout << "Name: " << name << ", Age: " << age << std::endl;  
    }  
};  
  
int main() {  
    // 定义一个Person对象数组,包含3个元素  
    Person people[3] = {  
        Person("Alice", 30),  
        Person("Bob", 25),  
        Person("Charlie", 35)  
    };  
  
    // 遍历数组并显示每个Person的信息  
    for(int i = 0; i < 3; ++i) {  
        people[i].display();  
    }  
  
    return 0;  
}

 三、JSON对象数组

[  
    {  
        "id": 1,  
        "name": "John Doe",  
        "email": "john.doe@example.com",  
        "is_active": true  
    },  
    {  
        "id": 2,  
        "name": "Jane Doe",  
        "email": "jane.doe@example.com",  
        "is_active": false  
    }  
]

一、定义数组

1.定义数组的同时初始化:

int numbers[5] = {10,20,30,40,50}; 

int moreNumbers[10] = {1,2,3}; //剩余的元素将被初始化为0

2.整数数组:

int numbers[5];  //定义一个包含5个整数的数组

//初始化数组
number[0] = 10;
number[1] = 20;

//遍历数组并打印每个元素
for(int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}

3.字符数组:

char greeting[6] = {'H','e','l','l','o','\0'}; //使用字符数组表示字符串


//使用字符串字面量初始化,编译器会自动添加'\0'
char greeting2[] = "Hello";

//打印字符串
cout << greeting << endl;
cout << greeting2 << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值