-
共用体成员的地址是相同的
union data{} printf("%p\n%p\n%p\n",&data_1.a,&data_1.b,&data_1.c);查看全部 -
struct weapon weapon_2[2] = {{},{}}; // weapon_2 为 weapon 数组第一个元素的地址,故 struct weapon * p; p = weapon_2; p->name // 相当于weapon_2[0].name p++; // 则相当于 weapon_2[1].name查看全部 -
struct stu{}; // 使用 struct stu xxx; //通过别名 typedef struct stu{ } stu_t; stu_t xxx; // 与上上面的一致查看全部 -
typedef 相当于给类型取一个别名
typedef int tni; tni a = 0; // int a = 0; typedef int* p; p q = NULL; //int *q = NULL;
查看全部 -
#define N(n) n*9 //则 int a = 10; int b = N(a); // int b = a*9 #define ADD(a,b) a+b // 加括号保险,故 #define ADD(a,b) (a+b) // int x; int y; int b = ADD(x,y); // x+y
查看全部 -

结构体的初始化和引用:
******************
#include <stdio.h>
struct weapon{
char name[20];
int atk;
int price;
};
int main(){
struct weapon weapon_1={"weapon_name",100,200};
printf("%s\n,%d\n",weapon_1.name,weapon_1.price);
int a[2];
struct weapon weapon_2[2]={"weapon_name1",50,100,"weapon_name2",100,200};
// struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}};
printf("%s\n,%d\n",weapon_2[0].name,weapon_2[1].atk);
return 0;
}*******************
weapon_1.name:成员变量
34行:初始化一个武器结构体对象
35行:访问这个结构体对象中某一个成员的值(使用“.”运算符)
.运算符在所有运算符中优先级最高
36、37行分别为:定义普通数组和结构体数组
38行:输出的写法(当普通变量用就好了)查看全部 -

结构体的定义和声明:
******************
#include <stdio.h>
struct weapon{
char name[20];
int atk;
int price;
}weapon_1;
int main(){
struct weapon weapon_1;
return 0;
}******************
结构体是不同类型变量的集合
数组是相同类型变量的集合struct weapon :结构体类型的名字
weapon_1:结构体变量的名字
第一个{}里面:各个成员“}weapon_1;”和“struct weapon weapon_1;”等价(一般两种定义方法)
13行-使用类型的名字去定义:声明和定义分离的形式(最常用)
11行-直接在声明的时候去定义(程序不便于维护)查看全部 -
原理:利用相同的数异或必为0,异或满足交换率和任何数和0异或都等于本身。
比如:
1.a=a^b;
2.b=b^a=b^(a^b)=b^b^a=0^a=a;
3.a=a^b=a^(b^a)=b^a^a=b^0=b;
查看全部 -
递归:在函数调用过程中被调用的函数调用它本身的一个过程
查看全部 -
链表:能够动态存储数据的数据结构
静态链表的节点均在程序中进行编译
原理:head->1,和2的地址->2,和3的地址->…………->n,和NULL. 每次若需访问第n个数据必须知道前一个数据的地址再找到该数据的地址
查看全部 -
若要指向结构体中的任意一个变量,有如下四种方法:
e.g struct weapon weapon_1{"weapon name"}
weapon_1.name
struct weapon (*w); w =&weapon name; (*w).name;
struct weapon (*w); w =&weapon name; w->name;
struct weapon *p; p=weapon_2;(指针访问该数组第一个数据的位置)
查看全部 -
因为结构体数组名本身就是指针地址 所以赋值给指针时 前面不用加&
查看全部 -
预处理对宏只会做字符串替换,不是语法,运算
查看全部 -
C编译步骤
查看全部 -
结构体指针
指向结构体的指针e.g struct weapon *w;
w=&weapon_1;
printf("name=%s\n", (*w).name/w->name/weapon_1.name);
weapon_2既为一维数组(其中包含两个结构体各为两个数组中的元素),又为指向该数组中第一个元素的指针。
查看全部
举报