C语言初阶问题

1.int *p=&n;那么*p的值是n的地址;p的值是p;p的地址&p;n的值n==*p

2.有如下定义语句:int a=[][3]={ {1,2},{3,4,5},{6,7,8},{9}};那么a[1][3]的值是6。

  因为a[1][3]中的a[1][]是{3,4,5},而数组下标从0开始,5的下标是2,则下标为3的应该是6,因为数组发生了越界。二维数组实质上是一个一维数组。在数组a[4][3]中,输出a[1][3]和a[2][0]的位置是一样的,即是同一个。

3.定义int**a[3][4];则变量占用的内存空间为48。

    先看优先级,中括号优先级高,所以是是一个数组。**a[3][4]是指针数组,每个指针数组占4个字节,共有3*4==12个,所以占用内存空间12*4==48;*(*a)[3][4]是指针,四个字节。

4.在数组传输时,只有一次机会可以传递数组,(可采用字符串拷贝)

A:数组以'\0'结尾,要占一个位置,直接赋值字符串超出范围,四个格子放不下五个。

B:数组以'\0'结尾,要占一个位置,拷贝字符串“hell”已经有四个位置,没有地方存放‘\0'导致字符串拷贝不上,超出范围。

   

C:memcpy是拷贝空间,strlen是字符串长度,先拷贝对应的空间,在将字符串拷贝至数组,拷贝三个字符,(原来有四个\0);

D:一般最常见的拷贝方式

 

5.代码的执行结果(X86)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值