zoukankan      html  css  js  c++  java
  • 8.结构体的使用 2015.12.3

    ***************************************************************************************************************************

    8.结构体的使用  2012.3.20

    ***************************************************************************************************************************

    #include "string.h"
    #include "iostream"
    using namespace std;
    
    struct Student
    {
    	int sid;
    	char name[20];
    	int age;
    };//结构体末尾分毫不能省略。。。
    
    void main()
    {
    	struct Student st = {7911,"lose ",12};
    	printf("%d %s    %d
    ",st.sid,st.name,st.age);//控制输出的格式
    	cout<<st.sid<<"    "<<st.name<<"    "<<st.age<<endl;//控制输出的格式
    	
    	//结构体中属性值的修改
    	st.sid = 95287;
    	//st.name = "lost all";//字符串的赋值不能这样的    error!!!
    	strcpy(st.name,"lo");//字符串赋值的方式进行复制
    	st.age = 99;
    	printf("%d    %s    %d
    ",st.sid,st.name,st.age);
    }
    

    struct Student st={1111111,"2222222",3333333}

    struct Student *pst=&st;

    则有:

    st.sid=100

    pst->sid=100    两种方式效果相同

    ************************************************************

    #include "string.h"
    #include "iostream"
    using namespace std;
    
    struct Student
    {
    	int sid;
    	char name[20];
    	int age;
    };//结构体末尾分毫不能省略。。。
    
    
    void f(struct Student *pst);//函数的方式对结构体进行赋值
    void g1(struct Student st);
    void g2(struct Student *st);
    
    void main()
    {
    	struct Student st;
    	cout<<"initial st    "<<&st<<endl;
    	f(&st);
    	//方法二输出:
    	g2(&st);
    	//方法一输出,特点是耗内存,耗时间
    	g1(st);//相当于又开辟了一个内存空间
    
    }
    
    void f(struct Student *pst)
    {
    	//指针的方式进行赋值
    	pst->sid=1111111;
    	strcpy(pst->name,"pst_name");
    	pst->age=200;
    	cout<<"f *pst  "<<&(*pst)<<endl;
    	cout<<"f  pst  "<<pst<<endl;//这里有指针的内容
    //pst放的是指针的地址 是地址 *pst就是代表整个结构体的(不能直接输出的,cout<<*pst,error) &(*pst)是取出结构体(*pst)的首地址 这个值和pst存放的地址值是一样的。。。 } void g2(struct Student *st) { printf("%d %s %d ",st->sid,st->name,st->age); st->sid = 666;//方法二中改变sid值 cout<<st->sid<<endl; cout<<"g2 *st "<<&(*st)<<endl; cout<<"g2 st "<<&st<<endl; } void g1(struct Student st) { printf("%d %s %d ",st.sid,st.name,st.age); cout<<"g1 st "<<&st<<endl; //"在方法二种对sid的值进行修改,而二中的值并没有发生变化" }

     结果:

    initial st    0012FF2C
       f *pst   0012FF2C
        f  pst   0012FF2C
    1111111  pst_name  200
    666
     g2 *st    0012FF2C
     g2  st    0012FEDC
    666  pst_name  200
     g1  st    0012FEC4

  • 相关阅读:
    react学习笔记4
    php学习笔记
    react学习笔记2
    react学习笔记
    获取一个数组中的随机值
    添加数据库补丁
    $.post $.getScript
    SQLServer2008将表数据导出的方法
    DataTable筛选符合条件的DataRow
    c# 下拉多选的实现
  • 原文地址:https://www.cnblogs.com/sn944/p/5018499.html
Copyright © 2011-2022 走看看