gpt4 book ai didi

c - s1、&s1、&s1.a 之间的区别(结构)

转载 作者:行者123 更新时间:2023-11-30 18:20:18 24 4
gpt4 key购买 nike

结构变量不与.一起使用时包含什么运算符?

考虑下面的程序

#include<stdio.h>
typedef struct{
char a;
int b;
} scratch;

int main(){
scratch s1 = {2,4};
printf("%p",s1); o/p 000566000
printf(" %p",&s1); o/p 00000420
printf(" %p",&s1.a); o/p 00000420
return 0;
}

结构变量s1及其第一个成员 s1.a& 一起使用时都返回相同的地址但是s1返回一些其他值。这是垃圾还是什么?

struct s1 包含什么? (当我使用oops语言执行此操作时,对象变量会打印一些与java有关的地址,并且java中没有地址运算符)。

有人能帮我解释一下 s1 在这里做什么吗?或者只是编译器问题?

最佳答案

您的所有 printf 语句都是非法的。

printf("%p",s1); 中,当需要 void* 时,会传递 scratch 类型。这会导致未定义的行为。

printf("%p",&s1); 中,当需要 void* 时,会传递 scratch* 类型。这会导致未定义的行为。请改用 printf("%p",(void*)&s1);

printf("%p",&s1.a); 中,当需要 void* 时,会传递 char* 类型。这会导致未定义的行为。请改用 printf("%p",(void*)&s1.a);

关于c - s1、&s1、&s1.a 之间的区别(结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com