简单数组及其与指针的应用介绍和总结

本文介绍了数组,特别是数组与指针的关系。数组在内存中是连续存放的,字符数组与数字数组的初始化方式有所不同。指针的使用包括不同类型的指针权限和指针加一的行为。二维数组的创建和初始化方式也进行了说明,强调了数组名与指针的差异。
摘要由CSDN通过智能技术生成

一维数组

数组在创建时必须指定大小(初始化赋值时不用写大小),方括号内必须是常量或者常量表达式

但arr[0]是错误的,它有可能跟紧跟其后的第二个数组arr2[0]地址重复

数字数组

 int arr[10];int arr[]={1,2,3,4,5,6,7,8,9,10];int arr[10]={……};都是正确的

字符数组

char [10]={'a','b','c'};char[]="abc"(申请三个字节);(申请四个字节包含‘\0‘)

char *P="abc",这种写法与上面两种不同,并没有创建数组,而时创建了一个字符串常量,将首元素的地址存放到指针p中。

题目1:
int main()
{
	char arr[] = "abc";
	char arr1[] = "abc";
	if (arr == arr1)
	{
		printf("相同");
	}
	else
	{
		printf("不同");
	}

输出结果

这里输出结果不同是虽然两个数组的首元素都时a,但是数组名代表的时首元素的地址,(它是一个常量,也无法被赋值)两组数组必然不在同一个地址中,所以不相同。


    


int main()
{
	char *arr = "abc";
	char *arr1 = "abc";
	if (arr == arr1)
	{
		printf("相同");
	}
	else
	{
		printf("不同");
	}

在这个题目中,定义的是指针,它们指向的都是常量字符串“abc“的首字符地址。

*当一个字符串常量出现于一个表达式中时,表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。因此,你可以把字符串常量赋值给一个“指向字符 的指针”,例如:char *a = "123" ; a = "abc";,后者指向这些字符所存储的地址。但是,你不能把字符串常量赋值给一个字符数组,因为字符串常量的直接值是一个指针,而不是这些字符本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值