结构体指针赋值报错
本帖最后由 Claude 于 2017-10-10 13:42 编辑typedef struct
{
int a;
int b;
}ST;
ST *OO;
ST &OO;//这样写报错
OO->a=10; 只能内存地址不能对实体赋值
你需要去复习 C 语言基础。
可以先去这边:「分享一本经典好书 《高质量C++&C 编程指南》 逢人必荐 终身受益」,下载那本书,快速攻关一下。 security 发表于 2017-10-9 17:11
你需要去复习 C 语言基础。
可以先去这边:「分享一本经典好书 《高质量C++&C 编程指南》 逢人必荐 终身受 ...
你这里面就没有介绍结构体指针的 Claude 发表于 2017-10-9 17:15
你这里面就没有介绍结构体指针的
结构体指针也是指针,没有什么差异。
你有什么疑惑呢? 没见到楼主有提出疑问,只是在陈述 野指针?OO没有具体地址。 基本概念没理解到。指针,变量,指针变量 typedef struct
{
int a;
int b;
}ST;
ST *OO;
ST CC;
uint8_t buf;
void testFunc(ST *bb)
{
bb->a=2;
bb->c=3;
}
int main()
{
OO=(ST*)buf;
OO->a=1;
OO->b=2;
testFunc(&CC);
}
security 发表于 2017-10-9 17:11
你需要去复习 C 语言基础。
可以先去这边:「分享一本经典好书 《高质量C++&C 编程指南》 逢人必荐 终身受 ...
谢谢分享,基础知识得好好学学 STT 发表于 2017-10-9 17:57
typedef struct
{
int a;
我的哥威武 STT 发表于 2017-10-9 17:57
typedef struct
{
int a;
我懂了 我说C++可以直接取地址数据,C还要给结构体数组空间,这明摆着就是个坑啊 楼主要引用? ST &OO = OO; 好像名字重了。 你把c++的引用拿到c里面了,c中&只有取地址意义,没有引用这种做法 “ST &OO;//这样写报错”
这里的&就是不符合语法的。没有这样用的,C++里有引用,但好像也只能在声明函数形参的时候使用。
C里面必须先定义指针ST *OO;再用同类型的变量的地址给指针赋值。 如果是c必须报错啊 *有你从哪看到定义变量带&带这个表示啥意思 本帖最后由 zcllom 于 2017-10-12 13:34 编辑
STT 发表于 2017-10-9 17:57
typedef struct
{
int a;
用了这么久的 C,给结构体中的某成员赋值都是用最普通的方式。
今天遇到这个办法,知道它可行。但还不解其中的原理?能告知否? 也就是为什么要借助函数和数组来实现?
zcllom 发表于 2017-10-12 13:18
用了这么久的 C,给结构体中的某成员赋值都是用最普通的方式。
今天遇到这个办法,知道它可行。但还不解 ...
请去 2 楼,去那边的链接看看。
这个是指针的概念,指针只是一个指针,需要指向有效的存储空间,才有意义。
这边的数组,便是有效的存储空间,而不是为什么要借助函数和数组来实现。 security 发表于 2017-10-12 14:19
请去 2 楼,去那边的链接看看。
这个是指针的概念,指针只是一个指针,需要指向有效的存储空间,才有意义 ...
是我多虑了,看上面的讨论,我还以为:不能用结构体指针操控它所指向的结构体中的成员进行赋值。说到底还是用的少,容易被带歪,多用多看调试信息通过实践印象更深刻。 指针在使用前初始化时要先制定指向的内存或地址 c++的引用也不是这么用的好吧
页:
[1]