13题和27题到底怎么做的呀,我就不理解这个吧
13题和27题到底怎么做的呀,我就不理解这个吧
这是两个最基础的题啊:
13题:你需要了解学习和梳理一下*指针所代表的含义,如果声明为 int *p; 实际上p是int*类型的。
这里的int * p = &n; 其实就是 int *p; p = &n; 那么p所指向的其实就是变量n所对应的地址,取地址对应的值,实际就是在(int *)类型的p前面加个(*) 即,这里的 p表示的是n的地址,而 *p表示的是n的地址对应的值就是n
27题是最基础的结构体初始化。 你需要去学习一下结构体的初始化。
struct A {int a; int b;}; A a = {1,2}; 再就是复杂的嵌套而已。
int main()
{
//13题:理解int* 的概念(p指向一个地址),以及取地址上对应的值的方法 *p;
int testn = 1, testm = 2;
int* p = &testn;
int* q = NULL; q = &testm; //这两个等价
//实际上 你要学习int *指针是啥, 实际上int *表示的是一个地址,取地址对应的值用*
//如取testn的值,和地址:
printf("testn 地址: [%p:%p] testn值[%d:%d] \n ", &testn, p, *p, testn);
//输出:testn 地址: [010FFAB0:010FFAB0] testn值[1:1]
//可以看出: 地址可以用&testn 和int* 类型的p表示,而对应的值可以用testn和(*p)取值
//====》这里你需要好好理解指针和*的概念,去百度或者书本上梳理一下。
//27题:你要梳理一下结构体的初始化。
struct A { int a; int b; };
A t_a = { 1,2 }; //这个最简单结构体你能理解?
printf("struct data is [%d][%d] \n", t_a.a, t_a.b); //struct data is[1][2]
//嵌套结构体的定义
struct B { int c; struct A d; }; //嵌套结构体 其实和struct B { int c; int a; int b; };没差 只是换了方式
B t_b = { 3,{1,2} }; //内部对象,按同样的{}方式初始化而已
A t_c = t_b.d; //和直接t_b.d.a t_b.d.b是一样的
printf("struct b is [%d, %d, %d] \n", t_b.c, t_c.a, t_c.b);//struct b is[3, 1, 2]
}