我用FString给另一个Fstring赋值,为什么结果是一个指针
时间: 2024-02-25 22:58:53 浏览: 158
如果你使用了FString的赋值操作符将一个FString赋值给另一个FString,而结果是一个指针,可能是因为你在使用FString的赋值操作符时,将一个C-style字符串(即char指针)赋值给了FString。此时,FString会将char指针作为字符串的地址,而不是将字符串的内容拷贝到新的FString对象中。
例如,以下代码将会导致FString指向一个char指针:
```c++
const char* MyString = "Hello World";
FString MyFString = MyString; // 这里将char指针赋值给FString
```
如果你想要将一个C-style字符串拷贝到FString中,你可以使用FString的构造函数:
```c++
const char* MyString = "Hello World";
FString MyFString(MyString); // 使用FString的构造函数将char指针拷贝到FString中
```
这样,MyFString将会包含一个拷贝自"MyString"的字符串。
相关问题
用c语言指针实现一个结构体数组对另一个结构体数组的赋值
以下是用C语言指针实现一个结构体数组对另一个结构体数组的赋值的示例代码:
```c
#include <stdio.h>
#include <string.h>
struct student {
int num;
char name[10];
char sex;
double height;};
int main() {
struct student stus1[3] = {{1001, "Tom", 'M', 1.75}, {1002, "Jerry", 'F', 1.65}, {1003, "Mike", 'M', 1.80}};
struct student stus2[3];
struct student *p1, *p2;
p1 = stus1;
p2 = stus2;
memcpy(p2, p1, sizeof(stus1));
for (int i = 0; i < 3; i++) {
printf("stus2[%d]: num=%d, name=%s, sex=%c, height=%.2f\n", i, (p2+i)->num, (p2+i)->name, (p2+i)->sex, (p2+i)->height);
}
return 0;
}
```
解释如下:
1. 定义了一个结构体`student`,包含学号、姓名、性别和身高四个成员变量。
2. 定义了两个结构体数组`stus1`和`stus2`,分别用于存储学生信息。
3. 定义了两个指向结构体的指针`p1`和`p2`,并将`p1`指向`stus1`数组的首元素,将`p2`指向`stus2`数组的首元素。
4. 使用`memcpy`函数将`stus1`数组中的数据复制到`stus2`数组中。
5. 使用指针遍历`stus2`数组,并输出每个学生的信息。
用c++ 定义一个结构体类型student(成员有:一个字符数组no、一个字符数组name,一个整型变量age,一个字符型变量 sex等,成员自己可以根据需要添加),在main函数内定义一个该结构体类型的变量,定义一个指向该变量的指针,给结构体变量各成员赋值并用指针将该变量的各成员值输出。
可以回答这个问题。
代码如下:
```c
#include <stdio.h>
#include <string.h>
struct student {
char no[20];
char name[20];
int age;
char sex;
};
int main() {
struct student stu = {"001", "Tom", 18, 'M'};
struct student *p = &stu;
strcpy(p->no, "002");
strcpy(p->name, "Jerry");
p->age = 19;
p->sex = 'F';
printf("no: %s\n", p->no);
printf("name: %s\n", p->name);
printf("age: %d\n", p->age);
printf("sex: %c\n", p->sex);
return 0;
}
```
输出结果为:
```
no: 002
name: Jerry
age: 19
sex: F
```
阅读全文