c语言中数组名与指针的区别与联系

今天在工作中定义数组的时候习惯性的使用char型指针后直接等于字符串,但在编译通过后运行的时候产生了段错误,因为着急就(整个函数代码还是比较多的)没仔细看代码,只是抱着试试看的心态,将定义换成了数组后等于字符串的形式,居然没有在出现段错误,感到很奇怪(刚干程序员没多久,一直以为数组名就是指针呢)。在这里做个记号,提醒我以后有时间的时候查一下段错误的原因。今天先总结一下刚从网上找到的数组名和char型指针的区别和联系。

1.数组名不是指针;

2.数组名可以当做一个指针常量使用;

3.指向数组的指针,就紧紧是一个指针;

4.当函数形参使用数组名是,其会被转换成一个单纯的指针。


以下是证明上面四点的论据:

1. 首先数组名不是指针,这很容易证明。



#include <string.h>
#include <stdio.h>
int main()
{
        char str1[]="Hello world!";
        char *str2="Hello world!";
        printf("Size of str1 is: %d\n",sizeof(str1));
        printf("Size of str2 is: %d\n",sizeof(str2));
        printf("Size of char is %d\n",sizeof(char));
        return 0;
}

执行结果如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值