关于C语言中数组不能直接赋值的原因探究

#include <stddef.h>
#include <stdio.h>


typedef struct{
       int s1;
       int s2;
}Struct;


int test()
{
	return 0;
}

int test2()
{
	return 0;
}
	
int main()
{
	int array[3] = {1,2,3};
	Struct stru = {1,2};
	Struct sru2 = stru;
	int a = 5;
    void* p = NULL;

	p = array;
	printf("%x\n", p);
	p = test;
	printf("%x\n", p);
	p = &stru;
	printf("%x\n", p);
	p = &a;
	printf("%x\n", p);

	return 0;
}	

如上述代码所表示的,结构体名跟普通变量名一样,需要通过&来取地址,其是变量;而数组名和函数名一样本身就代表地址,是地址常量,如同&stru2 = &stru非法一样,数组名之间也无法赋值,进一步说,array是常量,而array[0]则是变量,这也是array与&array同样表示地址的原因。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值