C语言基础学习Day7(连载中)

C语言基础学习(Day7)

笔者有话说:通过前面的学习,我们学习了C语言的第一个重点——流程控制,以及C语言的第二个重点——函数,第七天我们主要学习C语言的灵魂——指针,想要学好C语言,一定要学好指针。由于指针非常重要,我们今天的学习内容相对较少,虽然内容较少但还是要认真学习才能掌握,笔者将继续用通俗易懂的语言带领小白15天掌握C语言基本知识,打卡第七天~

C语言的灵魂

指针(C语言的灵魂)

(1)引入

   include <stdio.h>
    
    int main(void)
    
    {
    	int * p;
    
    	int i = 3;
    
    	p = &i;//ok
    	//p = i; 	//error	因为类型不一致,p只能存放int类型变量的地址,不能存放int类型的变量 
    	//p = 55;	//error		原因同上 
    
    	return 0;
    }

1、p变量的名字int *** 表示 p变量存放的是int类型变量的地址**;

2、int * p 不表示定义了一个名字叫做 *p 的变量,该理解为:p是变量名,p变量的类型是int * 类型

3、所谓 int * 类型,实际上就是存放int变量地址的类型

4、*p 就是以p的内容为地址的变量。

(2)p = &i;

1、p保存了i的地址,因此p指向i

2、p不是i,i也不是p

更准确的说:修改p的值不影响i的值,修改i的值也不影响p的值

3、如果一个指针变量指向了某个普通变量,则:

*指针变量 就完全等同于 普通变量

例子:

如果p是个指针变量,且p存放了普通变量i的地址,则p指向了普通变量

	*p 就完全等同于 i

或者说:在所有出现 *p 的地方,都可以替换成 i ;在所有出现 i 的地方,都可以替换成 *p

 #include <stdio.h>
    
    int main(void)
    {
    	int * p;
    	int i = 3;
    	int j = 5;
    	
    	p = &i;
    	j = *p;	//等价于 i = j;
    	//* p 就是以p的内容为地址的变量 
    	
    	printf("i = %d, j = %d\n", i, j, p);
    
    	return 0;	
    } 

(3)指针和指针变量的区别

1、指针就是地址,地址就是指针

2、地址就是内存单元编号

3、指针变量是存放地址的变量;

4、指针和指针变量是两个不同的概念(但是要注意,通常我们叙述时,会把指针变量简称为指针,实际它们的含义并不一样)。

(4)指针的重要性

1、通过指针可以表示一些复杂的数据结构

2、快速地传递数据

3、使函数返回一个以上的值

4、能直接访问硬件

5、能够方便处理字符串

6、使理解面向对象语言中引用的基础

总结:指针使C语言的灵魂

(5)指针的定义

1、地址:内存单元的编号;从0开始的非负整数

(对于32位机器)地址的范围:4G(0—4G-1)

若机器为32位,即有32跟地址线,可以控制2^32个单元(字节)

2^32B=2^30B*4=1G*4=4GB

机器内存条到底有多大 取决于硬件软件结合

2、指针

指针就是地址,地址就是指针

指针变量就是存放内存单元编号变量,或者说指针变量就是存放地址的变量

指针和指针变量是两个不同的概念(但是要注意,通常我们叙述时,会把指针变量简称为指针,实际它们的含义并不一样);

指针的本质就是一个操作受限非负整数指针【地址】只能相减,不能进行加、乘、除)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值