大家好,我是灰帽小张。今天是我学习打卡的第五天,这五天的时间,我主要是通过B站的学习初步认识了C语言,也在视频结束后,自己敲了一遍代码,感觉有时候会很懵,哎,加油吧!!得学啊!
一、认识指针:
a.分清p和*p:
//内存会划分为一个个内存单元,每一个内存单元就是一个byte(字节)每个内存单元都有一个编号,即地址(指针)。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 10;//向内存申请4个字节,存储10.
printf("%p\n", &a);//&取地址操作符,输出结果实时变化,因为运行程序才会申请内存,因为本台电脑64位,内存大小为2的64次方byte,即8G,输出结果为16进制
&a;//地址:0x0000008C9EAFFC44内存中的数据(倒着存的,16进制,10即a):0a 00 00 00 40 不准确的内存数据的文本解析:....@
int* p = &a;//p为指针变量,用以存储地址(指针)的变量叫做指针变量。p=0x0000008C9EAFFC44
//int说明p指向的对象是int类型的。*说明p是指针变量;
char b = 'w';
char* pc = &b;//因为b的类型是char,所以此时写作char*
*p = 30;//解引用操作符,意思就是通过p中存放的地址,找到p所指向的对象。*p就是p指向的对象。
printf("%d", a);//*P就是p指向的对象a,所以此时a的值发生了变化,由10变为了30.
return 0;
}
此时a由10变为了30.
b.指针变量的大小:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
//int*p;
//char*p2;
//不管是什么类型的指针,都是在创建变量;
//指针变量是用来存放地址的;
//指针变量的大小取决一个地址存放的时候需要多大的空间;
//32位机器上的地址:32bit位--4byte,所以指针变量的大小是4个字节;
//64位机器上的地址:64bit位--8byte,所以指针变量的大小是8个字节;
printf("%zu\n", sizeof(int*));
printf("%zu\n", sizeof(char*));
printf("%zu\n", sizeof(float*));
printf("%zu\n", sizeof(short*));
printf("%zu\n", sizeof(double*));
return 0;
}
二、认识结构体:
因为生活中有很多复杂类型,不能用int等数据类型表示,因此需要结构体。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct Student {
char name[20];//成员
int age;
char sex[20];
char tele[20];
};
void print(struct Student*ps) {
printf("%s %d %s %s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).tele);
//结构体指针变量->成员名 访问结构体
printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->tele);
}
int main()
{
struct Student s = {"张三",18,"男","11111111111"};
//结构体对象.成员名
//printf("%s %d %s %s",s.name,s.age,s.sex,s.tele);
print(&s);
return 0;
}
结束语:
到这里了,初识C语言部分就结束了,整个部分的学习大概用了我五天的时间,接下来才是重点了,期待我下一回的博客吧!!