关于c语言指针的一些认识

目录

 

指针的初始化

指针的赋值

指针的应用场景


 

指针的初始化

          初始化的目的是让指针知道指向哪个地址,以防止其指向一些“危险”地址。其方法有两种。

          第一:在声明指针的时候告知变量的地址。例如

int i=1;
int *p=&i;

                 第二:不初始化指针,在后直接将地址赋值给指针。例如

int i=1;
int *p;
p=&i;

       但要注意,如下写法是错误的。

int i=1;
int *p;
*p=&i;

              如此做会把i的地址值(一个确切的数值)保存到*p指针所指向的那个地址储存的变量里面,但由于*p并没有初始化,这          个&i的值会被写入一个未知的地方,可能造成危险导致程序崩溃。此时编译器(dev-c++)也会报错 

   [Warning] assignment makes integer from pointer without a cast

             一般是赋值类型和变量类型不一致所导致的。

指针的赋值

一般有两种情况。

    第一种是把一个地址传给指针,让指针指向一个新的地址。

    第二种是把值赋给指针所指向的地址里保存着的那个变量。

指针的应用场景

一、函数需要返回多个值。

二、需要在函数块外对函数块内的变量进行操作时。一般是传入的参数需要保存结果并传回的情况。

三、通过指针返回一些特殊值(如-1或者0)来表明运算错误。有点抽象,这里通过一段代码来举例。

/*整数的除法,并在分母为0时报错*/
#include<stdio.h>

int division(int a,int b,double *c);

int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    double *c=0;
    if(division(a,b,&c)){
        printf("%.2lf",c);
    }
    else{
        printf("Wrong!");
    }
}

int division(int a,int b,double *c)
{
    int ret=1;
    if(b!=0){
    *c=a/b;
    }
    else{
    ret = 0;
    }
    
    return ret;
}

这段代码通过控制ret=1或0来表达程序的运行状态。

四、动态内存的申请

五、传入较大数据时用作参数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值