美文网首页
数组赋给数组

数组赋给数组

作者: calm_peng | 来源:发表于2018-04-19 21:21 被阅读0次

遇到的问题:c++中一个数组传给另一个数组时不比配的问题

正确版本1:

#include "iostream"
#include"string"

using namespace std;


class Student{
private:
    char *sno,*sname;
    int age;
public:
    Student(char sno[],char sname[],int age){
        this->sno = sno;
        this->sname = sname;
        this->age = age;
        
        
    }
    void print(){
        
        cout<<"sno:"<<sno<<" sname:"<<sname<<" age:"<<age<<endl;
    }

    
    
};

int main(){
    char sno[10],sname[20];
    int age;
    while(cin>>sno>>sname>>age){
        Student A(sno,sname,age);
        A.print();
        
        return 0;
    }
    
 
}
结果

正确2:

//....
public:
    Student(char* sno,char * sname,int age){
        this->sno = sno;
        this->sname = sname;
        this->age = age;
        
        
    }
//....

数组名和指针皆为地址,不影响。但是有区别这两者,前者指的是数组的第一个元素的地址,并且是不可改的,常量指针,改了的话,那块地址的数组就无法使用,会内存溢出
;后者是可改的。

下面这个更具体:
https://segmentfault.com/q/1010000003793687
错误1:

//...
public:
    Student(char[] sno,char[] sname,int age){
        this->sno = sno;
        this->sname = sname;
        this->age = age;
//...

错误

char[] a; java风格
char a[]; c/c++风格

错误2:


class Student{
private:
    char sno[10],sname[20];
    int age;
public:
    Student(const char* sno,char * sname,int age){
        this->sno = sno;
        this->sname = sname;
        this->age = age;
        
        
    }

理由正如上面所说,数组名(地址)不可改(赋值)。
只能用 strcpy ,memcpy.

To copy the content into the array, you need to use strcpy() from string.h (char array) or memcpy() in general.

正确:


class Student{
private:
    char sno[10],sname[20];
    int age;
public:
    Student( char* sno,char * sname,int age){
        strcpy(this->sno,sno);
        strcpy(this->sname,sname);
        
//        this->sno = sno;
//        this->sname = sname;
        this->age = age;
        
        
    }

总结:
概念不清,没有细细的理解。数组和指针的熟练度太低。

相关文章

  • 数组赋给数组

    遇到的问题:c++中一个数组传给另一个数组时不比配的问题 正确版本1: 正确2: 数组名和指针皆为地址,不影响。但...

  • 数组指针和指针数组

    1.数组指针(又称行指针) 二维数组赋给一指针时: 2.指针数组 二维数组赋给一指针数组: 小结:数组指针只是个指...

  • JavaScript数组

    数组可以包含任意类型的数据,通过索引获取元素 获取数组的长度,可以使用length属性 给数组的length属性赋...

  • 排序算法

    计数排序 思想: 利用数组的索引,将对应的数组当做数组的索引,将所对应的元素赋给一个值,遍历这个数组取值 选择排序...

  • for循环遍历

    wx:for 循环数组 wx:for-item 即给列表赋别名

  • 数组

    数组 1. 声明 2. 初始化 只有在定义数组时才能使用初始化 不能将一个数组赋给另一个数组 初始化数组时,提供的...

  • 【学习笔记】JavaScript数组过滤相同元素的6种方法

    一. 题目说明: 题目 基本思路:采用循环嵌套外层循环将数组中的值赋给新的数组内层循环通过if语句判断新数组中是否...

  • shell-数组

    1. 数组 1.1 什么是shell数组 1.2 数组的分类 1.3 数组的赋值方式 数组赋值方式: 一次赋多个值...

  • js 高频面试题(最新)

    1、深浅拷贝 (1) 定义 浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引...

  • C++ 字符数组与字符串的使用及加结束符'\0'的问题

    1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]...

网友评论

      本文标题:数组赋给数组

      本文链接:https://www.haomeiwen.com/subject/ijsgkftx.html