评论

收藏

[C++] C语言结构体、结构体指针、结构体别名(多种代码、注释示范)

编程语言 编程语言 发布于:2021-07-06 18:33 | 阅读数:578 | 评论:0

  

  • 时间不是很充裕就只摆示范代码和注释了
  • 看完这些样例代码就能理解透彻了
#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;
}
  

  
关注下面的标签,发现更多相似文章