Bootstrap

零基础学编程(7)——指针和结构体

声明在前

图中用于展示程序代码的软件是Visual Studio 2019 社区版,在微软官网即可下载,本人目前是大四,非计算机专业学生,零基础学编程系列为本人自学笔记及心得,文章中如有错误,欢迎各位批评指正,希望与大家一起学习进步。

学习指针之前需要先了解内存。

1.内存

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中运行的。
为了有效的使用内存,就把内存划分成一个个小的单元,每个内存单元的大小都是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

32位64位
32根地址线/数据线也是电线,通电时正负电信号可以转化为数字信号0和164根地址线/数据线也是电线,通电时正负电信号可以转化为数字信号0和1
0—232-1, 共有232=0.5 GB个内存空间,每个内存单元大小是1字节,内存空间为4 G。0—264-1,共有264个内存空间

2.指针

int a=1;//4个字节
int* p;//p为一个整型指针变量,
printf("%d\n",sizeof(p));32位中指针地址大小是4字节,64位是8字节
p=&a;//指针变量用来存放地址
printf("%p\n",&a);//取出a的存储地址,%p打印地址
printf("%p\n",*p);//两者打印结果相同
*p=20;//*——解引用操作符/间接访问操作符
printf("a=%d\n",a);//打印结果是a=20

实例:

char ch='w';char* pc=&ch;//此时*表示p是个指针
*pc='a';//此时*表示解引用操作符
printf("%c\n",ch);//打印结果为a

内存大小

printf("%d\n",sizeof(char*));//32位系统大小为4
printf("%d\n",sizeof(short*));//32位系统大小为4
printf("%d\n",sizeof(int*));//32位系统大小为4
printf("%d\n",sizeof(double*));//32位系统大小为4

3.结构体——struct

结构体使C语言有能力描述复杂类型:
比如描述学生:“姓名+年龄+性别+学号”;
描述人:“姓名+年龄+身份证号+联系方式”;
描述书:“书名+作者+出版社+定价+书号”;
复杂对象使用结构体描述,结构体是我们自己创造出来的类型

struct book//创建一个结构体类型
{
    char name[20];//C语言程序设计
    short price;//9.9
};//分号不可省略

int main()
{
    //利用结构体类型,创建一个该类型的结构体变量
    struct book a = {"C语言程序设计"9.9}printf("书名:%s 价格:%d\n",a.name,a.price);//.表示结构体成员
    a.price=9;//可对变量进行修改,name是数组,不可直接更改
    struct book* pb=&a;//对结构体取地址,也要使用struct
    printf("%s %d\n",(*pb).name,(*pb).price);//利用指针打印结构体成员
    printf("%s %d\n",pb->name,pb->price);//比上面简单,打印结果相同
    return 0}
 struct book a = {"C语言程序设计"9.9}//若要对name数组进行修改为C++
 strcpy(a.name,"C++");//string copy-字符串拷贝-库函数-需要有头文件string.h
 printf("%d\n",a.name);//打印C++

至此,本部分结束。因为对编程及计算机语言没有太多的基础,所以写的过于详细,主要作为我个人的学习记录,也希望能帮到跟我一样零基础但是想学习编程的同学。

;