指针与数组 字符指针,字符串和字符数组的区别

指针和数组是不相等的,把一个数组名作为一个参数传递给函数时数组名就是指向第一个元素的指针,

在大多数表达式中数组名的值是指向第一个元素的指针(有两个例外,一个是sizeof返回的是整个数组

的字节数,一个是&操作符返回的是一个指向数组的指针),但不代表两者等价。

int  a[3];

int  *b;

声明一个数组时,编译器会根据声明申请元素的个数保留内存空间,然后再创建数组名,a的值就是

一个常量,指向这段空间的起始位置。声明一个指针时,编译器只会为指针本身保留内存空间,不会

为任何整形值保留空间。




所以用*a是和法的,而*b是非法的。  a++是非法的,因为a是常量,b++合法。


字符指针与字符串和字符串的区别又是什么?

字符指针是一个指向字符的指针,字符数组是元素为字符的数组,字符串是一个以'\0'结尾的字符数组

char* a = "abcd";虽然你可以通过a访问字符串,但你对a进行字符串操作就会出错如strcpy(a,“bcd”)

因为编译器并没有为a预留字符串内存。(指针与数组的区别)

字符数组的大小是固定的

char a[] = {'a','b','c','\0','d'};  sizeof(a)为5不论有没有\0,

char b[] ="abcd", sizeof(b)为5,b = {'a','b','c','d','\0'}; 用字符数组存放字符串编译器会为字符串预留一个

位置存放'\0'表示字符串结尾,在32为平台下指针的大小总为4个字节。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏尔肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值