c.指针学习笔记

指针变量的赋值

指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值。未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误。在C语言中, 变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。 C语言中提供了地址运算符&来表示变量的地址。其一般形式为: & 变量名; 如&a变示变量a的地址,&b表示变量b的地址。 变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式:

(1)指针变量初始化的方法 int a;

int *p=&a;

(2)赋值语句的方法 int a;

int a;
char b;
int  *p;//定义一个int型的指针变量p,p只能用来存储int型变量 的地址值
p=&a;
p=&b;//这是错误的
  1. 不允许把一个数赋予指针变量,故下面的赋值是错误的: int *p;p=1000;
  2. 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 也是错误的

指针运算符

(1)取地址运算符&
   取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。在scanf函数及前面介绍指针变量赋值中使用了&运算符。

(2)取内容运算符
   取内容运算符是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在运算符之后跟的变量必须是指针变量。需要注意的是指针运算符和指针变量说明中的指针说明符 不是一回事。在指针变量说明中,“”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“”则是一个运算符用以表示指针变量所指的变量。

利用指针写swap函数

在这里插入图片描述结果:输入a=1,b=2 输出a=1 b=2
没有交换的原因:p1 p2的值交换,a和b数据域未交换

void swap(int *p1,int *p2)//指针变量为出口参数
{
    int temp;
    temp=*p1;
    *p1=*p2;
    *p2=temp;
}



int main()
{

    int a=1,b=2;

    swap(&a,&b);//入口参数为地址值
    printf(" a= %d  b=%d \n",a,b);
    return 0;
}

指针与数组

在这里插入图片描述在这里插入图片描述在这里插入图片描述

多维数组

创建二维数组array[3] [4]
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

指针与数组参数的四种方法

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述4.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值