指针学习三——指针变量的初始化

本文详细解析了指针变量的初始化原则,包括必须先赋值后使用、目标变量类型一致、不能用数值直接初始化等关键规则,并通过具体示例说明了如何避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针变量的初始化——必须先赋值后使用

  1. 在指针变量定义或者初始化时,变量前的* 只能表示是个指针变量。
  2. 把一个变量的地址作为初始化值时,该变量必须在此前进行定义。
  3. 可以用初始化的指针变量给另一个指针变量作初始化值。
  4. 不能用数值作为指针变量的值,但可以将一个指针变量初始化为一个空指针。
  5. 指针变量定义是的存储单元和它所指向的目标变量的数据类型必须一致。

例如:

int *p=1000;   是不对的  而  int *p=0;是对的。

#include<stdio.h>
void swap1(int x,int y),swap2(int *px,int *py),swap3(int *px,int *py);
int main()
{
	int a=1,b=2;
	int *pa=&a,*pb=&b;
	//px存放a的地址,pb存放b的地址
	swap1(a,b);
	printf("After calling swap1: a=%d b=%d\n",a,b);
	
	a=1;
	b=2;
	swap2(pa,pb);
	printf("After calling swap2: a=%d b=%d\n",a,b);
	
	a=1;
	b=2;
	swap3(pa,pb);
	printf("After calling swap3: a=%d b=%d\n",a,b);
	
	return 0;
 } 
 void swap1(int x,int y)
 {
 	int t;
 	t=x;//变得是x和y的值,当调回主函数时,swap1中定义的变量销毁了
所以不改变a和b的值。
 	x=y;
 	y=t;
 }
 void swap2(int *px,int *py)
 {
 	int t;
 	t=*px;    //通过*符号,改变了px和py指向的值,a,b的存储单元也变了,
所以a,b的值也变了。
 	*px=*py;
 	*py=t;
 }
 void swap3(int *px,int *py)
 {
 	int *pt;
 	pt=px;//改变的时px,py形参指针的值,没有*,px,py不会指向a,b。
所以a,b的之没变。
 	px=py;
 	py=pt;
 }


结果:
After calling swap1: a=1 b=2
After calling swap2: a=2 b=1
After calling swap3: a=1 b=2

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值