c语言基础--指针

文章介绍了地址和指针在编程中的概念,指针是一个存储内存地址的变量,而地址是内存单元的编号。通过指针变量可以访问和修改其所指向的变量的值。文章通过示例代码说明了指针变量的定义、赋值和使用规则,强调了指针类型与所指向变量类型的匹配性,以及*运算符和&取地址符的作用。
摘要由CSDN通过智能技术生成

地址和指针的概念

  • 我们定义了一个变量,在程序编译时自动为该变量分配内存空间
  • 系统根据变量的类型不同分配的字节空间大小不同,比如int形,分配4个字节空间
  • 内存中每一个字节都有一个编号,就是地址,相当于宾馆的房间号
  • 在地址所标记的内存单元中存放数据,就像是宾馆中的旅客
  • 由于通过地址可以找到所需要的内存单元:地址指向该变量单元,我们称作指针

指针和指针变量

  • 指针:变量i的指针是2000/地址2000就是i的指针;指针就是一个地址
  • 指针变量:存放地址的变量
  • 普通变量:存放的数据

指针变量的定义

  • 类型 *指针变量名
  • int 型的指针变量只能指向int型的变量,这个int就是基类型
#include<stdio.h>
void main()
{
	int a =100,b=10;
	int *point_a,*point_b; //定义两个指针变量 
	point_a=&a;  //&取地址符。(将a的地址给了指针变量point_a) 
	point_b = &b;
	printf("a=%d,b=%d\n",a,b);//直接输出 
	printf("*point_a=%d,*point_b=%d\n",*point_a,*point_b) ;//*指针变量所指向的变量(输出数值) 
	printf("point_a=%d,point_b=%d",point_a,point_b) ;//输出的a和b在内存单元的地址 
}

在这里插入图片描述

合法性

#include<stdio.h>
void main()
{
	int a =100,b=10;
	int *point_a; 
	*point_a=&a;//错误 的
	printf("*point_a=%d\n",*point_a) ;	

}




#include<stdio.h>
void main()
{
	int a =100,b=10;
	int *point_a;  
	point_a=&a;//正确 
	printf("*point_a=%d\n",*point_a) ;	

}
#include<stdio.h>
void main()
{
	int a =100,b=10;
	int *point_a=&a;  //初始化的时候赋值 正确 

	printf("*point_a=%d\n",*point_a) ;	

}
#include<stdio.h>
void main()
{
	float a =99.9;
	int *point_a;  
	point_a=&a; //错误的 类型不一致 
	printf("*point_a=%d\n",*point_a) ;	

}

指针变量的引用

  • *指针运算符
  • & 取地址符
#include<stdio.h>
void main()
{
	int a=9,*p;//定义指针变量p(存放变量的地址)
	p = &a; //将a的地址给p
	*p=5;//将5数值赋值
	printf("%d",a);//5  	

}
#include<stdio.h>
void main()
{
	int a,*p,b,c,d,e;
	a=100;
	p=&a;
	b = *&a;
	printf("a=%d\n",a);
	printf("p=%d\n",p);
	printf("*p=%d\n",*p);
	printf("*&a=%d\n",b); //先取a的地址&a;然后在*运算,变量a的值
	c=(*p)++;
	printf("(*p)++=%d\n",c);//相当于a++
	printf("a=%d\n",a);	

}

在这里插入图片描述

#include<stdio.h>
void main()
{
	int a,*p,b,c,d,e;
	a=100;
	p=&a;
	printf("%d\n",p);//6356724
	c=*p++;//* 和 ++优先级相同,结合方式自右向左*(p++) 
	printf("%d\n",c);//100
	printf("%d\n",a);	//100
	printf("%d",p);//6356728

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值