C总结的第一篇

学习C语言也有一段时间了,进展很慢。过程中多多少少都领悟到了一些东西,在这里想把它写下来,算是一个阶段总结,
也算是一个新的起点。

请各位不要笑话,认为我在学习过程中,吹毛求疵。

下面我对 定义数组时立即初始化语句 即char array[12]="/0"; 谈一下我的看法以及延伸总结。

首先我认为char array[12]="/0";是定义了一个长度为12的字符数组,并且所有的字符被赋值为'/0'。
我用如下列子证明
main()
{
   char array[12]="/0";
   array[5]='b';
   printf("string=%s",array);
}
结果:string=
因为array[0]就是NULL,所以字符串输出遇到'/0'就停止了。

再来一个证明
main()
{
   char array[12]="/0";
   array[5]='b';
   array[0]='a';
   printf("string=%s",array);
}
结果为 string=a

好,下面讨论定义数组时立即初始化的必要性

main()
{
   char array[6];
   array[0]='a';
   array[1]='b';
   array[2]='c';
   array[3]='d';
   array[4]='e';
   array[5]='/0';
   printf("string=%s",array);
}

结果输出 string=abcde

反例:

main()
{
   char array[6];
   array[0]='a';
  // array[1]='b';
  // array[2]='c';
  // array[3]='d';
  // array[4]='e';
  // array[5]='/0';
   printf("string=%s",array);
}

依次注释掉array[1]到array[5],查看每次输出结果都不一样,在被注释掉的数组元素上的值不可估。
我认为 输出的是这些变量在内存地址里的原值,所以初始化是很必要的,否则不可估的变量内存原值会对
我们造成伤害。

所以这句话 char array[12]="/0";是相当重要的,还有同列 char *point=NULL;

另外延伸一个数组名和指针的问题

数组名和指针都表示地址,但是你可以把数组名所表示的首地址赋给指针,但是不能把指针赋给数组名首地址

例如

main()
{
  char array[2] , *point;
  /* correct */
  point=array;
 
  /* error */
  array=point;
}

这就像穿衣服,指针想穿哪件穿哪件,数组名只能等着被人穿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值