C语言学习记录——사 初识C语言(4)

目录

一、指针

指针变量大小

二、结构体


一、指针

接着之前的说,char,int,double这些类型都可以,输出时,printf后面的无论是变量还是指针变量都可。

int main()
{
    double d = 3.14;
    double* pd = &d;
    *pd = 5.5;
    printf("%lf\n", d);
    printf("%lf\n", *pd);
    printf("%p\n", pd);
    printf("%d\n", sizeof(pd));
    return 0;
}

都能正常输出。如果想知道pd的地址,那就printf("%p\n", pd)。

指针变量大小

用上面的代码

指针变量大小32为电脑是4字节,64位是8字节。这个要记住,无论是什么类型的指针,都是4个字节或者8个字节。

二、结构体

struct:利用结构体类型,创建一个该类型的结构体变量。

写到现在,考虑一个问题,如何描述一本书。书名,作者,价格什么的都需要表达出来。但是这些不可能是我们赋值一个值,或者去做循环。这些是复杂对象,想要描述它们。就得需要结构体,结构体是我们创造出来的一种类型,C语言中规定了一个关键字struct,用来做结构体的程序。我们写书名,价格,把它们放在大括号里。声明书名为一个char类型数组,里面可放20个字符,价格为short类型,然后结束这个结构体,注意一定要在结束的大括号后加分号,这是用来专门结束这个类型定义的。看一下代码:

struct Book
{
    char name[20];
    short price;
};
int main()
{
    struct Book b1 = { "C语言程序设计", 55 };
    printf("书名: %s\n", b1.name);
    printf("价格: %d\n", b1.price);
    b1.price = 15;
    printf("修改后的价格: %d\n", b1.price);
    return 0;
}

来到main函数块里,我们说b1就是这本书,然后给书名,价格到b1里。之后也可以在修改价格。

另有其他的。

struct Book b1 = {"C语言程序设计", 55};

struct Book* pb = &b1;  //pb指向b1,b1为struct Book类型,所以pb是struct Book*类型的指针变量

printf("%s\n", (*pb).name);

..............d......................price);

这样也可以打印出书名和价格。但是这样也有点繁琐,需要继续简化。这就可以用到另一个操作符->。

printf("%s\n", pb->name);

..............d...............price);

       意为pb指向name,因为pb是一个指针。操作符应用到结构体变量可以找到成员,而->操作符是指针指向成员。到现在为止,所有操作符就写完了。

       再写一些。关于改书名 。

struct Book b1 = {"C语言程序设计", 55};

b1.name = "C++";  //如果这样做,就会出错。因为这时候这个数组里的元素"C语言程序设计”是常量字符串,也就是不能更改,只能替换。这里需要用到一个库函数,strcpy。

strcpy(b1.name, "C++")//意思为把C++拷贝到name中。需要有头文件string.h。string copy——strcpy

printf("%s\n", b1.name);

再输出,书名就改为了C++。

struct Book
{
    char name[20];
    short price;
};

int main()
{
    struct Book b1 = { "C语言程序设计", 55 };
    printf("书名: %s\n", b1.name);
    printf("价格: %d\n", b1.price);
    b1.price = 15;
    printf("修改后的价格: %d\n", b1.price);
    strcpy(b1.name, "C++");
    printf("%s\n", b1.name);
    return 0;
}

结束。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值