精华内容
下载资源
问答
  • 结构体别名
    2021-11-30 20:16:46
    typedef struct Node
    {
        int data;   //数据域,用来存放数据域;
        struct Node *pNext;  //定义一个结构体指针,指向下一次个与当前节点数据类型相同的节点
    }NODE,*PNODE;   //NODE等价于 struct Node; PNODE等价于struct Node*;
    
    更多相关内容
  • 009-结构体别名typedef

    2021-03-11 13:36:37
    #include<stdlib.h> #include<stdio.h> #include<string.h> // 普通类型变量和指针取...// 结构体别名 typedef struct Fruit JavaFruit; typedef struct Fruit* PJavaFruit; struct Fruit { .
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    
    // 普通类型变量和指针取别名
    typedef int  Age; // Age int类型的别名
    typedef int* AP; // AP  int类型指针的别名
    
    // 结构体取别名
    typedef struct Fruit  JavaFruit;
    typedef struct Fruit* PJavaFruit;
    
    struct Fruit {
        char *name;
        double weight;
    };
    
    typedef struct Vegetable{
        char *name;
        double price;
    
    } VB, *P_VB;  // VB是Vegetable结构体的别名, P_VB是Vegetable结构指针的别名
    
    
    //结构体函数指针成员 C语言到最后搞来搞去,写的都是这样的代码:
    typedef struct Girl{
        char *name;
        int age;
        void(*sayHi)(char*);
    } Girl;
    
    typedef Girl* GirlP; // Girl结构指针别名GirlP
    
    void sayHi(char* msg){
        printf("sayHi Content is %s\n", msg);
    }
    
    void reGirlname(GirlP gp){
        // 如果传Girl类型进来, 会重新开辟一个内存空间,用完就销毁掉了,所以需要传指针进来。
        gp->name = "Android";
    }
    
    int main() {
        // 结构体取别名
        // typedef 取别名
        // 1. 不同的名称代表在干不同的事情,比如 typedef int jint;
        // 2. 不同情况下,使用不同的别名
        // typedef JNIEnv JNIEnv;
        // typedef _JavaVM JavaVM;
    
        // 结构体取别名
    //    struct Fruit{
    //        char *name;
    //        double weight;
    //    };
    //
    //    typedef struct Fruit  JavaFruit;
    //    typedef struct Fruit* PJavaFruit;
    //
    //
    //    typedef struct Vegetable{
    //        char *name;
    //        double price;
    //
    //    } VB, *P_VB;  // VB是Vegetable结构体的别名, P_VB是Vegetable结构指针的别名
    
    
        struct Fruit o_fruit = {"Orange", 200.2f};
        //o_fruit.name = "Orange";
        printf("Raw usage name %s\n", o_fruit.name);
    
        int k = 5;
        AP p_k = &k;
        printf("p_k value is %d\n", *p_k);
    
        JavaFruit jFruit = {"apple", 200.2};
        PJavaFruit pFruit = &jFruit;
        printf("Furit name is %s, weight is %.1f\n", pFruit->name, pFruit->weight);
    
    
        //结构体函数指针成员 C语言到最后搞来搞去,写的都是这样的代码:
    
        struct Girl girl = {"Lucy", 18, sayHi};
        girl.sayHi("Hello World");
    
        GirlP p_girl = &girl;
        reGirlname(p_girl);
        p_girl->sayHi("ByeByte , World!"); 
        return 0;
    }
    
    Raw usage name Orange
    p_k value is 5
    Furit name is apple, weight is 200.2
    sayHi Content is Hello World
    sayHi Content is ByeByte , World!

     

    展开全文
  • //结构体、指针、别名组合在一起容易记混,下面给出常见几种组合 //要区分清楚的关键在于理解声明变量的语法是 变量类型(int、struct struct_name、int*,类型后面带*代表是该类型的指针变量) 变量名字 =值; 例如 ...
    • 时间不是很充裕就只摆示范代码和注释了
    • 看完这些样例代码就能理解透彻了
    #include<stdio.h>
    #include<string.h>
    
    //结构体、指针、别名组合在一起容易记混,下面给出常见几种组合
    //要区分清楚的关键在于理解声明变量的语法是   变量类型(int、struct struct_name、int*,类型后面带*代表是该类型的指针变量)  变量名字 =值;  例如   int a = 1;意思是把变量a赋值为1  int是变量类型(要定义自己的类型用结构体)  a是变量名字(自己取的) =代表赋值操作 1是值  ;是代表这一个语句结束 
    //理解清楚结构体的基本格式
    /*
    定义一个结构体,结构体名字为user,两个成员变量  
    struct user{
    	char username[20];
    	char password[20];
    };
    使用这个结构体声明一个结构体变量
    struct user xiaoming;
    struct user xiaoming={"xiaoming","123456"};
    修改(由于是长度不相同的两个字符数组,用strcpy方便点,如果是数字等直接 xiaoming.age=18;) 
    strcpy(xiaoming.username,"xiaoming_modified") 
    */ 
    /*
    定义一个结构体,结构体名字为user,两个成员变量 ,声明了一个结构体变量,名字叫xiaoming 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming;
    */ 
    /*
    定义一个结构体,结构体名字为user,两个成员变量 ,声明了一个结构体变量,名字叫xiaoming并赋值了 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"};
    */ 
    /*
    定义一个结构体,结构体名字为user,两个成员变量 ,声明了一个结构体变量,名字叫xiaoming并赋值了 ,另外定义了一个结构体指针变量 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"},*p;
    p=&xiaoming;//这样p就指向了xiaoming这个变量,指针变量可以理解为是一个可以用来指向变量的变量 
    strcpy(p->username ,"xiaoming_modified");//使用指针变量操作被指向变量的数据时使用箭头->,而结构体变量时使用点. 
     
    */ 
    /*
    typedef struct {
    	char username[20];
    	char password[20];
    } user;
    */ 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"},*p;
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    
    
    
    int main(){
    	p=&xiaoming;
    	strcpy(p->username ,"xiaoming_modified");
    	printf("%s",xiaoming.username);
    	return 0;
    } 
    
    #include<stdio.h>
    #include<string.h>
    
    //定义一个结构体并创建一个结构体变量 
    
    /*结构体语法  []代表可选 
    struct [结构体名字] {
    	[结构体成员类型]  [结构体成员名字][=结构体成员的值];
    }[结构体变量]; 
    
    例如
    struct user{
    	char username[20];
    	char password[20];
    };
    可以预先赋值 
    struct user{
    	char username[20]="xiaoming";
    	char password[20];
    };
    可以预先声明结构体变量 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming;
    可以预先声明结构体变量并且赋初值 
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"};
    
    访问成员变量时用点和箭头的区别
     .     类型为结构体变量使用          struct user xiaoming;strcpy(xiaoming.username,"xiaoming");
     ->    类型为结构体指针变量时使用  struct user *xiaoming;strcpy(xiaoming->username,"xiaoming");
    */
    struct user{
    	char username[20];
    	char password[20];
    };
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    void print_user(struct user u){
    	//打印User结构体 
    	printf("struct user {");
    	new_line();
    	printf("    username:\"%s\",",u.username);
    	new_line();
    	printf("    password:\"%s\"",u.password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    int main(){
    	//定义一个结构体变量  struct user 变量名; 
    	struct user xiaoming;
    	//	xiaoming.username="xiaoming";//这样是不行的,因为username那边是20个字符,这边不足,要么补\0 要么用strcpy 
    	strcpy(xiaoming.username,"xiaoming");
    	strcpy(xiaoming.password,"123456");
    	print_user(xiaoming);
    	return 0;
    } 
    
    #include<stdio.h>
    #include<string.h>
    
    //定义一个结构体并在定义时就声明一个结构体变量并且赋值 
    
    // 声明后不赋值写法,后面再自己赋值也可以 
    // struct user{
    //	char username[20];
    //	char password[20];
    //}xiaoming;
    
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"};
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    void print_user(struct user u){
    	//打印User结构体 
    	printf("struct user {");
    	new_line();
    	printf("    username:\"%s\",",u.username);
    	new_line();
    	printf("    password:\"%s\"",u.password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    int main(){
    	print_user(xiaoming);
    	return 0;
    } 
    
    #include<stdio.h>
    #include<string.h>
    
    //定义一个结构体并在定义时就创建一个结构体变量并赋初值,然后使用这个进行复制 
    
    
    
    struct user{
    	char username[20];
    	char password[20];
    }xiaoming={"xiaoming","123456"};
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    void print_user(struct user u){
    	//打印User结构体 
    	printf("struct user {");
    	new_line();
    	printf("    username:\"%s\",",u.username);
    	new_line();
    	printf("    password:\"%s\"",u.password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    int main(){
    	struct user libai=xiaoming;
    	strcpy(xiaoming.username,"x");
    	print_user(libai);
    	print_user(xiaoming);
    	return 0;
    } 
    
    #include<stdio.h>
    #include<string.h>
    
    //定义一个结构体并取别名(其实也就是定义一个新的类型) 
    
    /*
    首先了解一下typedef命令
     typedef int number;
     上面命令给int取了个别名叫number,或者理解为顶一个了一个新的类型,这个类型名字是number,类型是int ,到后面类型是某个结构体,就是定义了一个新的类型 
    */ 
    
    typedef struct {
    	char username[20];
    	char password[20];
    }user;
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    
    void print_user(user u){
    	//打印User结构体 
    	printf("struct user {");
    	new_line();
    	printf("    username:\"%s\",",u.username);
    	new_line();
    	printf("    password:\"%s\"",u.password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    int main(){
    	//使用别名user来创建结构体变量 
    	user xiaoming;
    	strcpy(xiaoming.username,"xiaoming");
    	strcpy(xiaoming.password,"123456");
    	print_user(xiaoming); 
    	return 0;
    } 
    
    #include<stdio.h>
    #include<string.h>
    
    //定义一个结构体并使用结构体指针 
    
    
    struct user {
    	char username[20];
    	char password[20];
    };
    
    void new_line(){
    	//打印使用printf函数,%d输出整数  %s输出字符串  %c 输出字符  %p打印内存地址   %x输出16进制数字   %o输出8进制   如果使用的输出格式定义没定义对有可能造成没有输出
    	printf("\n");//打印个换行 
    }
    void print_user(struct user u){
    	//打印User结构体 
    	printf("struct user {");
    	new_line();
    	printf("    username:\"%s\",",u.username);
    	new_line();
    	printf("    password:\"%s\"",u.password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    
    void print_user(struct user *u){
    	//打印User结构体 
    	printf("struct *user {");
    	new_line();
    	printf("    username:\"%s\",",u->username);
    	new_line();
    	printf("    password:\"%s\"",u->password);
    	new_line();
    	printf("    }");
    	new_line();
    }
    int main(){
    	struct user  xiaoming;//创建一个结构体变量 
    	strcpy(xiaoming.username,"xiaoming");
    	strcpy(xiaoming.password,"123456");
    	print_user(xiaoming); 
    	
    	struct user *u=&xiaoming;//创建一个结构体指针变量指向xiaoming, 
    	strcpy(u->username,"u");//使用指针变量去改变值 
    	print_user(u); 
    	print_user(xiaoming); //被指向的xiaoming的值也被改变了 
    	return 0;
    } 
    
    展开全文
  • C语言结构体 别名定义

    千次阅读 2015-12-18 18:56:39
    C语言给结构体定义别名用typedef关键字操作,就两种情况: 1、 给结构体起一个别名,如: typedef struct ABC{ ... }S; 这就为结构体ABC定义了一个别名S。以后写S x;就等价于写struct ABC x 。 ...

    以前一直有这么个误区。现在解决了。


    C语言给结构体定义别名用typedef关键字操作,就两种情况:

    1、

    给结构体起一个别名,如:

    typedef struct ABC{
    ...

    }S;

    这就为结构体ABC定义了一个别名S。以后写S x;就等价于写struct ABC x 。


    2、

    给结构体指针起一个别名,如:

    typedef struct ABC{

    ...

    }* PS;

    这就为结构体指针ABC * 定义了一个别名PS。以后写PS pt ; 就等价于写struct ABC *pt 。

    注意!!这里是用typedef给struct ABC{...} *起一个别名PS,而不是给struct ABC{...}起一个别名*PS

    后者是说不通的,起码的错误是标识符不可能以*开头!

    展开全文
  • C语言结构体别名定义问题

    千次阅读 多人点赞 2016-12-04 11:51:30
    typedef struct AAA{ ... }*PS; 这就为结构体指针AAA *定义了一个别名PS。以后写 PS pt; 就等价于写 struct AAA *pt; 了。对于上例中,写 BiTree root; 就等价于写 struct Node *root;
  • 如图,我在a文件使用b文件的结构体变量时,声明结构体时,还得使用结构体本名kyai.h kyai.c demo_main.c 用别名就不行 ...注意,创建结构体时,使用别名时也不能加struct,会报错kyai.c 这样就没事......
  • 一、结构体类型定义、 二、结构体类型别名、 三、结构体类型变量声明、 1、使用结构体类型 ( 别名 ) 声明变量、 2、 定义隐式结构体时声明变量、 3、定义普通结构体时声明变量、 二、完整代码示例、
  • 结构体类型别名

    千次阅读 2020-08-28 02:19:32
    结构体类型别名 code typedef_struct .c #include<stdio.h> struct Person{ int number; char sex; double money; } p; //此时定义的p是一个全局变量 void print_message(){ //结构体可以定义在函数...
  • 为什么要用typedef定义结构体别名

    千次阅读 多人点赞 2018-04-02 12:32:03
    定义一个结构体,比如说:struct STU{ int age; struct STU *next;};然后我想定义一个结构体类型的指针,应该是struct STU *p;或者定义一个普通的结构体变量struct STU a;比较麻烦,用typedef后typedef struct STU...
  • 就是说同种事物的另外一个称谓,而C的别名代表的是typedef后面定义的所有内容,别名会写在最后,所以,}后面的Lnode和*LinkList都是struct Lnode的别名,使用别名的目的就是为了让结构体更方便于理解和控制,以后在...
  • 结构体别名

    2021-10-07 15:31:04
    将这个结构体命名为Date
  • 结构体别名和指针

    千次阅读 2018-05-01 21:37:04
    结构体:_TSaveDepotDatatypedef struct _TSaveDepotData{ BYTE Tc1[0x4];//填充 WCHAR data1;// BYTE Tc2[0x3];// BYTE data2;// BYTE Tc3[0x6];... //结构体 //结构体别名 TSaveDepotData:typ...
  • 结构体初始化
  • 自定义类型和类型别名 type MyInt int // 自定义类型 type newInt = int // 类型别名 类型别名只在代码编写过程中有效,编译完成之后就不存在,内置的byte和rune都属于类型别名结构体 基本数据类型: 变成是代码...
  • package main import ( "fmt" "reflect" "time" ) //将New定义为int类型 type NewInt int //将int取一个别名叫IntAlias type IntAlias =int ... 能够随意的为各种类型...//定义time.Duration 别名为MyDuration...
  • typedef struct 是为了使用这个结构体方便。 具体区别在于: (1)若struct node { }这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; (2)若用typedef,可以这样写,typedef struct node{}...
  • C版本:定义结构体 Student 并调用里面的变量age 定义结构体 struct Student{ int id; int age; }; 调用: struct Student stu; int b = stu.age; 2.定义结构体 typedef struct Student { int id; int age; }Stud; ...
  • 通用写法 给结构体别名 关键字typedef // 首先定义一个结构体 struct Worker_ { char name[10]; int age; char sex; }; // 给结构体定义一个别名 typedef struct Worder_ Worder_; // 定义一个结构体指针...
  • 结构体struct及类型别名typedef的使用

    千次阅读 2019-05-01 15:24:11
    一、结构体的创建 在C语言中,实现数据结构的一种常用方法便是使用结构体(structure)其示例代码如下: struct stu { int num; char ch; }; struct表示创建结构体 stu为结构体名称,里面的内容是各种变量类型(可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,792
精华内容 11,916
关键字:

结构体别名