初学指针

指针、引用和取值
什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。
指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,表示这里声明了一个指针。其它情况用到表示指针的取值。
&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。
// 声明一个int指针
int *ptr;
// 声明一个int值
int val = 1;
// 为指针分配一个int值的引用
ptr = &val;
// 对指针进行取值,打印存储在指针地址中的内容
int deref = *ptr;
printf("%d\n", deref);

交换函数的实现:
#include <stdio.h>
#include <stdlib.h>
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10, b = 20;
printf(“交换前:\n a = %d, b = %d\n”, a, b);
swap(a, b);
printf(“交换后:\n a = %d, b = %d”, a, b);
return 0;
}
//没错你的结果如下,发现没有交换成功,
//是因为你这里你只是把形参的两个变量交换了,
//然后函数执行完毕后你就把资源释放了,而没有实际改变实参。
那么用指针实现:
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a = 10, b = 20;
printf(“交换前:\n a = %d, b = %d\n”, a, b);
swap(&a, &b);
printf(“交换后:\n a = %d, b = %d”, a, b);
return 0;
}
//还有一种方式就是“引用 ”如下的sawp(&a, &b)
//这里是c++的代码,如果你在c语言的代码里
//使用这种引用的方式就会报错。
#include
#include
using namespace std;
void swap(int &x, int &y)
{
int temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10, b = 20;
printf(“交换前:\n a = %d, b = %d\n”, a, b);
swap(a, b);
printf(“交换后:\n a = %d, b = %d”, a, b);
return 0;
}

const与指针使用方法
#include <stdio.h>
int main(int argc, const char * argv[])
{
// 1 可改变指针
const int a = 10;
int *p = &a;
*p = 1000;
printf("*p = %d\n", *p);
// 2 可改变指针
const b = 10;
int *pb = &b;
pb = p;
printf("*pb = %d\n", *pb);
// 3
const c = 10;
int * const pc = &c;
*pc = 1000;
//pc = pb;不能改变
//4
const d = 10;
const * int const pd = &d;
//*pd = 1000; 不能改变
printf("\n");
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值