`

字符串赋值=和strcpy问题

    博客分类:
  • C++
阅读更多
#include<iostream>
#include<string.h>
using namespace std;

struct Student
{
    char name[10];
    int num;
    char sex;
};

int main()
{
    Student *p;
    p = new Student;
    strcpy(p->name, "Wang Fun");
   char chr[] = {"Wang Fun"};
  // p -> name =  {"Wang Fun"}; 错误,数组之间不能直接赋值
    p->num = 10123;
    p->sex = 'M';
    cout << p -> name << " " << p->num << " " << p -> sex <<endl;
    delete p;
    return 0;
}

 

  关于字符串的赋值问题,网上说得很多,都谈论的是,用‘=’号时是指向同一地址,strcopy时是得到两个相同的字符串,但是却没有提及到修改问题。

    其实,当用‘=’号赋值时,得到的字符串是不能够修改的,但是编译时却不会提示错误。而用strcpy复制时,可以对字符串修改,但在使用strcpy之前,应该用new或malloc等为字符串分配空间。

#include <iostream.h>
#include <string.h>
int main()

{

   char *str="hello";

   str[0]='H';

   cout<<endl<<str<<endl;

   return 0;
}

执行结果:

....关闭

 

#include <iostream.h>
#include <string.h>
int main()

{

   char *str;
   str=new char;
   strcpy(str,"hello");

   str[0]='H';

   cout<<endl<<str<<endl;

   return 0;
}

执行结果:

Hello

分享到:
评论

相关推荐

    C语言中关于字符串左右循环移位的问题

    在上面的代码中,我们首先使用while循环计算数组a中的字符串大小,然后使用while循环将不需要循环右移的字符串赋值到数组b中,接着使用while循环将数组a中的字符串全部赋值到数组b[j]以后的空间中,最后使用for循环...

    编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数[文].pdf

    strcpy 函数和类 String 的构造函数、析构函数、赋值函数和重载运算符函数都是软件开发中最基本的知识点,它们的实现需要注意内存的分配和释放、字符串的复制和赋值、运算符的语义和边界条件等多方面的考虑。

    将字符串str1 拷贝到str2中

    ### 字符串拷贝知识点详解 #### 一、概述 在C语言中,字符串是由字符组成的数组,并且最后...通过指针遍历源字符串,逐个字符地复制到目标字符串,并在最后添加字符串结束标志`\0`,确保了拷贝过程的完整性和正确性。

    字符串与指针

    通过`strcpy`函数将字符串复制到`s1`中,接着将`s2`的地址赋给了另一个指针`p2`。之后使用一个`for`循环,将`s1`中的内容逐个字符地复制到`s2`中,直至遇到字符串的结束符`'\0'`。 #### 三、具体操作分析 1. **...

    strcpy() 与 ‘\0’

    2. 在实际编程中,通常需要确保目标数组已经初始化为零,或者在字符串赋值前手动添加'\0',以避免出现未定义行为。 3. 如果源字符串长度大于目标数组大小,将导致缓冲区溢出,这可能会覆盖内存中的其他数据,导致...

    C语言各章节单元测试题及答案——字符串.pdf

    八、字符串赋值 在C语言中,字符串可以使用多种方式进行赋值,例如使用strcpy函数、使用strcat函数、使用指针赋值等。 通过这份资源,读者可以掌握C语言字符串的基本概念和操作方法,提高自己的编程能力。

    C++字符串输入

    修改C风格字符串需要使用如`strcpy`、`strcat`等函数,而`std::string`支持直接赋值和拼接操作。 - **安全性与灵活性** `std::string`提供了更安全的内存管理,防止了缓冲区溢出的风险,并且能够动态地调整字符...

    c++和c字符串表达的区别

    6. **`atoi()`和`atol()`:**分别用于将字符串转换为整数和长整数。例如:`atoi(str)`将字符串`str`转换为整数。 7. **`strncmp()`:**用于比较两个字符串的前n个字符是否相同。例如:`strncmp(s1, s2, size);` ...

    字符串和字符数组PPT学习教案.pptx

    然而,需要注意的是,直接将字符串赋值给字符数组,如`str = "Hello";`是错误的,因为数组名是常量,不能出现在赋值号的左边。 C++还引入了C语言中的字符串处理函数,需要包含`&lt;string.h&gt;`头文件。`gets()`函数用于...

    strcpy原型

    // 这里是逐位赋值,并且在每次赋值后检查是否达到字符串末尾 } return address; } ``` - **断言检查**: `assert((strDest != NULL) && (strSrc != NULL));` 这行代码使用了 `assert` 函数来进行简单的错误检测...

    strcpy函数

    总之,`strcpy_v1`函数提供了一个相对安全且具有注释的`strcpy`实现,强调了在字符串操作中常见的陷阱和最佳实践。对于初学者来说,它是理解`strcpy`功能和潜在风险的一个很好的起点。然而,为了进一步提高代码的...

    C++字符串完全指南.rar_C 字符串_字符串_字符串操作_读字符串

    C++标准库中的`&lt;string&gt;`头文件提供了丰富的字符串操作函数,如`std::strcpy()`、`std::strcmp()`等。`&lt;algorithm&gt;`头文件包含一些适用于字符串的操作,如`std::sort()`、`std::reverse()`等。 7. **字符串与I/O流...

    c++字符串操作

    处理C风格字符串的函数包括`strlen()`计算长度,`strcpy()`和`strncpy()`复制字符串,`strcmp()`比较字符串,`strcat()`和`strncat()`连接字符串等。但使用时需注意内存管理和越界问题。 3. **MFC STRING 类**:...

    字符串处理函数(9KB)

    3. **复制与赋值**:`strcpy()`(C/C++)、`assign()`(C++ std::string)或`= operator`(许多语言中用于字符串赋值)。 4. **连接与拼接**:`+`运算符在很多语言中用于字符串连接,Python中的`join()`函数可以将...

    python字符串操作.pdf

    下面,我将根据文件内容中的描述和代码片段,详细解释这些字符串操作的知识点。 1. strcpy(sStr1,sStr2) 这是一个模拟C语言中strcpy函数的Python代码片段。它试图将sStr2的内容复制到sStr1中,但实际上在Python中...

    c语言_satisfiedusp_字符数组和字符串_

    在C语言中,字符数组和字符串是编程时经常会遇到的基本数据结构。它们在处理文本信息时扮演着核心角色。字符数组本质上是存储字符的数组,而字符串则是一种特殊的字符数组,通常以空字符'\0'作为结束标识。下面将...

    c字符串,string对象,字符串字面值的区别详解

    C风格字符串的一个显著缺点是需要开发者手动管理内存,容易引发缓冲区溢出等问题,而`std::string`类则通过内部管理内存来避免这些问题。 总结来说,C字符串是原始的字符数组,需要谨慎处理内存和边界,字符串字...

    字符串操作函数,c(c++)

    本文将详细解释三个常用的字符串操作函数:`strcat`、`strcpy`和`strcmp`,并提供它们的实现细节。 1. **`strcat`函数**: `strcat`函数用于将一个字符串连接到另一个字符串的末尾。它的原型是: ```c char *...

Global site tag (gtag.js) - Google Analytics