和新朋友说声Hellow(初识C语言,快速读懂C语言程序)【4】
2022/1/13 20:09:13
本文主要是介绍和新朋友说声Hellow(初识C语言,快速读懂C语言程序)【4】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.指针
指针:生而难学,我很抱歉
可以看出,指针难其实不太怪指针蛤hahah( ̄︶ ̄)
指针是比较重要的内容,在这里我们也只是简单的讲解,到后面会有详细解读
1.1内存
讲到指针必须先讲内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地 址
就像这个表格一样,就可以形象的表示出内存是什么样子的后面的0x.......就是内存的地址了
前面的一个字节一个字节,可以用来存放数据,当你在编译器中发出指令,内存就会为其开辟一块空间
用一段代码可以清晰的看出来
include <stdio.h> int main() { int num = 10; #//取出num的地址 printf("%p\n", &num);//打印地址,%p是以地址的形式打印 return 0; }
这段代码通过运行,就能看出来num的数值和地址,和上面的表格对应起来就很好理解了
像这样
1.2指针
在上面我们知道,内存单元是又地址的,那如何存储地址呢?
那就是
指针
指针是用来存储内存地址的变量,指针是变量!指针是变量!!指针是变量!!!
1.2.1
指针如何定义
是变量就有类型,指针也有类型,所有变量能用的类型,它也能用
就好像
int* pa; float* pb; double* pc; char* pd
不仅仅是这些,甚至在结构体中也能用指针,这个到后面结构体的时候会讲到
一般定义指针的时候,会在它指向的变量前面加个p,这样方便程序阅读
1.2.2
指针变量的大小
指针既然是变量,就会有大小,可以用这样一段代码来测试一下
这段代码你有可能得到的结果是4,也有可能是8.
结论:指针大小在32位平台是4个字节,64位平台是8个字节。
2.结构体
2.1结构体定义
结构体是属于我们初识C语言的终章了
结构体就是把很多很多的类型打包,我们可以看一段代码来表示结构体
#include<stdio.h> struct stu { int num; char name; float scorat; }stu;
这样我们就定义了一个叫stu的结构体,题包含int类型的num,char类型的name和float类型的scorat,在我们定义一个学生的时候我们就可以写 struck stu a;
在我们访问某个结构体的时候,就可以用a.num就访问了这个结构体的num
在前面我们也提到过指针作用于结构体
我们可以定义一个结构体指针,其定义方法和访问都看下面这段代码
struct stu *pa; //这是结构体指针的定义 (*pa).num; //这是结构体指针访问的第一种形式 pa->num; //这是结构体指针访问的第二种形式
这段代码可以清楚的表示结构体指针的用法。
2.2结构体初始化
结构体初始化,就可以一个一个访问,用一个循环加scanf来初始化,或者直接这样
struct stu a ={1615,'张三',561.1}
这样也可以完成结构体的初始化
到这我们也就完结撒花了,如果看完这些,你已经可以完整的读明白任何一段C语言代码了,真正进入C语言,将会在后面的文章中从选择分支和循环那里开始详细讲解
这篇关于和新朋友说声Hellow(初识C语言,快速读懂C语言程序)【4】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享