C语言-空指针

一个数组A,A中每个元素都是指针类型,如果A中的一个元素B在内存中的值是0,那么就说B是空指针

下面的示例定义一个长度为3的数组,数组中每个元素的类型都是char的指针,但是每个元素的内容都是0,那么言外之意就是说这个数组里面装着3个空指针

#include "stdio.h"

int main(void){
	char * A[3]={0}; 
}

下面的示例定义了两个数组,然后放到A的前两个位置

#include "stdio.h"

int main(void){
        char * A[3]={0};
        char arr1[]="abc";
        char arr2[]="def";
        //将指向arr1第一个元素的指针放到A[0]位置
        A[0]=arr1;
        //将指向arr2第一个元素的指针放到A[1]位置
        A[1]=arr2;
        //此时,A[2]的值依然为0,所以A[2]是空指针,而A[0]和A[1]不再是空指针
}

下面的代码打印出上述示例的内容

#include "stdio.h"

int main(void){
        char * A [3]={0};
        char arr1[]="abc";
        char arr2[]="def";
        A[0]=arr1;
        A[1]=arr2;

		// p是一个指针,它指向的内容也是一个指针
        char ** p=A;
        // 如果p指向的内容(*p)不是一个空指针,则说明这个内容是arr1或者arr2的首元素地址
        while(*p!=0){
                puts(*p);
                p++;
        }
}

上述的示例演示完毕,同理,下面的示例打印main函数的入参,遇见空指针则停止

#include "stdio.h"

int main(int len,char * * arg){
    while(*arg!=0){//如果元素不是空指针,则打印内容
        puts(*arg++);
    }
}

gcc编译之后默认生成a.out文件,输入下面的命令观察上述函数的打印结果

./a.out a b c

打印内容如下

./a.out
a
b
c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值