C++程序中结构体里的指针问题

2024-12-16 20:19:55
推荐回答(4个)
回答1:

你贴出的是两段代码,"///"注释上方的那段是错误的,因为:

上面那段代码结构体中 szName和szPassword这两个变量的【字符】型的。而你在main()函数中给这两个变量赋的值(用【双引号】括在里面的值在C语言里认为是字符串。)是【字符串】型,尝试把字符串赋值给字符型的变量,所以出错,而nlevel是整形,你在main函数里面赋的值也是整形,所以无错。

相关知识:
你在结构体里面定义的 szName 和 szPassWord如果是 char类型的话,表示这两个变量存储的是【字符】。而【字符】通常指的是【单个英文字母】、【符号】或【数字】等(就是可以ASCII码表里面表示的东东),字符赋值的时候用【单引号】括起你要赋的值,如【 char letter = ‘A’; 】表示把A赋给字符型变量letter,【字符串】指的是由若干个【字符】组成的串。在C语言里用指针【char *】表示字符串,赋值时用【双引号】括起你要赋的值。如【char *name = " Ass"】。

回答2:

  1. #include "stdafx.h"
    #include "iostream.h"
    struct COperator
    {
    char szName;        //这里不用指针
    char szPassWord;     //这里不用指针
    int nlevel;   //
    };
    int main(int argc, char* argv[])
    {
    COperator user;
    user.szName = "FUCK";
    user.szPassWord = "FUCK YOU!";
    user.nlevel = 99;
    cout<cout<cout<return 0;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #include "stdafx.h"
    #include "iostream.h"
    struct COperator
    {
    char* szName;     //这里为什么要用指针
    char* szPassWord;    //这里为什么要用指针
    int nlevel;    //而整型的却不用呢
    };
    int main(int argc, char* argv[])
    {
    COperator user;
    user.szName = "FUCK";
    user.szPassWord = "FUCK YOU!";
    user.nlevel = 99;
    cout<cout<cout<return 0;
    }

    错误提示: cannot convert from 'char [5]' to 'char'
      This conversion requires a reinterpret_cast, a C-style cast or function-style cast

回答3:

采纳率:40% 10级 2013.02.25 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 
先声明几个指针放着做例子:
例一:

(1)int*ptr;

(2)char*ptr;

(3)int**ptr;

(4)int(*ptr)[3];

(5)int*(*ptr)[4];

回答4:

指针涉及到数据结构。