03.初识C语言3

一、指针

1.内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地 址。

//内存是计算机上的一种存储空间

//8G/16G

//程序运行的时候会载入内存

//程序如果有数据需要存储也会申请空间

 ///2进制:0~1

///8进制:0~7

///10进制:0~9

///16进制:0~9 a(10) b(11) c d e f

///一个字符占4个字节,他打印的是第一个字节

#include<stdio.h>
int main()
{
	int a = 1;//向内存申请4个字节
	int* pa = &a;//此时的pa是指针变量,pa的值为a处的地址
	*pa = 20;//解引用操作 - 作用就是通过pa中的地址,找到a, *pa就是a//此时将20赋给pa地址处
	//a = 20;

	printf("%d\n", a);
	printf("%p\n", &a);//&a为地址
	printf("%p\n", pa);//指针变量
	return 0;

}

 //&取地址操作符

//&a取的是所占内存的4个字节中第一个字节的地址

//int a=11=0xb(16位)=013(8位)

//pa是一个变量,这个变量是用来存放地址的

//而地址又称为指针

//所以C语言把pa叫指针变量(指针变量是存放指针的变量) 

2.指针变量的大小

#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
    printf("%d\n", sizeof(char *));
    printf("%d\n", sizeof(short *));
    printf("%d\n", sizeof(int *));
    printf("%d\n", sizeof(double *));
    return 0;
}

1.

 2.

 ///32位机器上,是32个bit位

///32位的机器上,指针变量存放的是32bit的地址

///32位的机器,指针的变量是4字节

//x86是32位

//x64是64位

二、结构体 

C语言的内置结构体:char short int long double float等

但是人(姓名、性别、身高)、书(书名、作者、出版社)这种复杂对象也需要有结构体

自定义的类型:

结构体

枚举

联合体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。 这里只能使用结构体来描述了。

C 语言中 void* 详解及应用 | 菜鸟教程 (runoob.com) 

struct Star
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id; //学号
};//注意以分号作为结束

void  Print(struct Star * ps)//说明其是指针变量,void无返回类型
{
    printf("%s %d %s %d", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);
    //printf("%s %d %s %d", ps->name,ps->age,ps->sex,ps->id);
    //上下语句是一致的

}
int main()
{
    //结构体的初始化
    struct Star s1 = { "lay",30,"男",1007 };
    struct Star s2 = { "金玟庭",20,"女",521 };
    printf("%s\n", s1.name);
    Print(&s1);
    return 0;
}

printf("%s %d %s %d", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);
printf("%s %d %s %d", ps->name,ps->age,ps->sex,ps->id);
//上下语句是一致的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值