我正在与一个结构定义如下的图书馆一起工作:
typedef struct {
int x;
union {
struct {
y;
union {
int z;
} innerStruct;
char *a;
} middleStruct;
int q;
} u;
} mainStruct;
如何访问char * a?
我尝试了多种方法。这有效:
mainStruct *myStruct;
int d = myStruct->x;
但这不起作用:
char *d = myStruct->a;
使用上述方法我可以得到x很好,但不是。为什么?
我以前从未与工会合作过,我被迫将此结构用作我需要的库的一部分。感谢您的提前帮助,如果我提出这个问题,对不起。
答案 0 :(得分:1)
x
字段是mainStruct
的直接成员,因此很自然地会起作用:
int d = myStruct->x;
字段a
是middleStruct
的成员,u
是mainStruct
的变体,x
是char *d = myStruct->u.middleStruct.a;
的成员。它比from flask import Flask, jsonify, session
import os
from flask_session import Session
app = Flask(__name__)
app.config["SESSION_TYPE"] = "filesystem"
app.config["SESSION_PERMANENT"] = False
app.config["SECRET_KEY"] = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
Session(app)
tasks = [
{
'id': 1,
'title': u'Buy groceries',
'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
'done': False
},
{
'id': 2,
'title': u'Learn Python',
'description': u'Need to find a good Python tutorial on the web',
'done': False
}
]
@app.route('/todo/api/v1.0/tasks', methods = ['GET'])
def get_tasks():
if "counter" in session:
session["counter"] += 1
session.modified = True
else:
session["counter"] = 1
session.modified = True
print("Counter: " + str(session["counter"]))
return jsonify({'tasks': tasks})
if __name__ == '__main__':
app.run(debug = True)
嵌套得更深,因此您需要像这样导航数据结构:
curl -i http://localhost:5000/todo/api/v1.0/tasks
答案 1 :(得分:1)
使用上述方法我可以得到x很好,但不是。为什么?
因为x
是mainStruct
的成员,但a
不是。
a
是middleStruct
的成员,u
的成员是mainStruct
的成员。您可以使用与访问非工会类实例的成员相同的语法来访问工会实例的成员。因此,您可以编写myStruct->u.middleStruct.a
P.S。除非您首先初始化mainStruct->u
,否则mainStruct
的行为是不确定的。