记录c++学习的第四天 :D

今天,学习到了一个极为重要的知识——指针
在c语言中,与指针相关的操作符有“&”(取地址),“*”(解引用),
对于取地址符号,已较为熟悉。
而“*”解引用符号,则还是一个较为新奇且难懂的概念。
意思大概就是——返回‘某一指针变量所指向'的地址所保存的值
例如:
//int main()
//{
//    int a = 10;
//    int* p = &a;//int*表示指针p指向的对象“a”的类型,&a表示求内存中a所对于的4个byte的地址(32位)
//    return 0;

//学习如何表示复杂的对象————使用结构体
//结构体关键字——struct
//struct+描述对象的类型
//例如表示一本书
struct book//这本书包括两个参数 一个是书名,采用字符的形式表示,一个是价格,采用短整型的形式表示
{
    char name[20];//假设书名取为“高等数学1”
    short price;//假设价格设置为 “28”
};
//接下来,使用主函数,将相应参数写入这本书
//int main()
//{
//    struct book b1 = { "高等数学1",28 };//利用结构体类型,创建一个该类型的结构体变量 “b1”,输入相关信息
//    //为了验证我们是否写入成功,将结果进行打印。
//    printf("这本书的书名是%s\n", b1.name);//如何在b1这个变量中找到name?我们输入b1.,可以将鼠标放入b1上,
//    //会看到我们先前设置的两个参数,1是name,2是price,我们输入b1.name即可表示书名这个变量了
//    printf("价格为%d\n", b1.price);//与上同理
//
//    //假如我们相要修改这本书的价格,我们能否在结构体外部进行修改呢?
//    b1.price = 15;
//    printf("修改后的价格为%d", b1.price);//这样做是否可行呢?查看结果
//    return 0;
//}
//结果输出为:
//这本书的书名是高等数学1
//价格为28
//修改后的价格为15

//由此可知,在结构体外部,也能修改结构体内部的变量值。
// 但是仅能修改变量值
//如:b1.name="xxxx";则会报错,原因是name是数组类型,不是变量类型
//需要用到库函数<string.h>-strcpy-string copy-字符串拷贝
//strcpy(b1.name,预期修改的书名);

//除此之外,还有一种方式能进行这本书相关信息的打印,那就是使用指针。
//int main()
//{
//    struct book b1={"高等数学1",28 };
//    struct book* pb = &b1;//指针pb所指向的类型为结构体——struct book,故指针pb的声明为struct book*
//    printf("这本书的名字为%s\n",(*pb).name);//*pb为指针指向地址中所保存的值,也就是b1的内容
//    printf("这本书的价格为%d\n", (*pb).price);//同理
//    return 0;
//}

//输出结果为:
//这本书的名字为高等数学1
//这本书的价格为28

//指针还有第二种使用形式:
int main()
{
    struct book b1 = { "高等数学1",28 };
   struct book* pb = &b1;
    printf("这本书的名字为%s\n", pb->name);//“pb->”意为“指针pb”所指向的内容,而pb指向b1,
   //此时就相当于b1.name 
    printf("这本书的价格为%d\n", pb->price);//同理
   return 0;
}
//总结一下“.”与“->”的用法
//.——结构体变量.成员
//->——结构体指针->成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值