指针相关

计算机考研机试笔记之C/C++基础5

指针

指针:变量存储在内存中某一个地址标识的存储空间中,在程序中,通过使用指针,获取变量地址。因此,在程序中输出指针的值为unsigned的整数。
指针变量:用来存放指针的变量。
&取地址运算符。

#include <stdio.h>
int main() {
	int a = 12;
	int *b = &a;
	printf("%d\n",a);
	printf("%d\n",&a);
	printf("%d\n",b);
	return 0;
}

输出:

12
6356744
6356744

指针与数组

数组名可以作为数组的首地址,比如数组int a[10],则a的值为a[0]的地址,a+2的值为a[2]的地址。

#include <stdio.h>
int main() {
	int a[10] = {1,2,3,4,5};
	printf("%d\n",sizeof(int));
	printf("%d\n",a);
	printf("%d\n",a+2);
	printf("%d\n",*a);
	printf("%d\n",*a+2);
	return 0;
}

输出:

4
6356712
6356720
1
3

由于int是占四个字节存储空间,a[0]的存放地址是6356712,a[2]与之相隔两个int型数据,故地址为6356712+4*2 = 6536720

指针作为函数参数

通过指针将变量地址传入函数,可以直接修改变量的值。
常见的例子:

#include <stdio.h>
void swap(int a,int b){//此方式没能转换a与b的值
	int temp = a;
	a = b;
	b = temp;	
}
void p_swap(int *a,int *b){//此方式能够转换a与b的值
	int x;
	int *temp = &x;//声明指针时最好初始化 
	*temp = *a; 
	*a = *b;
	*b = *temp;
	free(temp);
}
int main() {
	int a = 2,b = 5;
	printf("before\t\ta = %d,b = %d\n",a,b);
	swap(a,b);
	printf("usual way\ta = %d,b = %d\n",a,b);
	a = 2;
	b = 5;
	printf("before\t\ta = %d,b = %d\n",a,b);
	p_swap(&a,&b);
	printf("point way\ta = %d,b = %d",a,b);
	return 0;
}

输出:

before          a = 2,b = 5
usual way       a = 2,b = 5
before          a = 2,b = 5
point way       a = 5,b = 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值