作者pizza0117 (阿水~*)
看板C_and_CPP
标题Re: [问题] 请教一些基本问题
时间Mon Sep 28 11:20:22 2009
※ 引述《kiminozo (Mr.Children-花火)》之铭言:
: 大家好,以下几题我有跑过程式
: 但却不知答案为何是如此,请各位帮我解惑,谢谢!!
: Q1.
: int a[5]={1,2,3,4,5};
: printf("%d",(a+1)[2]);
: Ans:4
: (a+1)[2]代表的是?
a指向1的位置假设是00H
a+1就跑到04H了
04H在+2不就是0CH
也就是4
: Q2.
: void foo(int b[][3])
: {
: ++b;
: b[1][1]=1;
: }
: int main(void)
: {
: int a[3][3]={ {1,2,3} , {4,5,6} , {7,8,9} };
: foo(a);
: printf("%d\n",a[1][1]);
: printf("%d\n",a[2][1]);
: }
: Ans: 5
: 1
: foo(a)这个副程式中发生了什麽事使得a矩阵数值改变?
b是指标的指标
++b就指向a[1]
从a[1]再去找[1][1]
就等於a[2][1]了
: Q3.
: void addsum(int *num)
: {
: int number = *num;
: printf("number=%d\n",(*num)++);
: }
: int main(void)
: {
: int i,number=100;
: for(i=0;i<N;i++)
: addsum(&number);
: }
: Ans: number=100
: number=101
: number=102
: for回圈中的&number不是都是指向同一个address吗
: 为何addsum副程式中number还是可以累加?
正因为是同一个位置 所以才可以改变数值不是吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.70.227.62
1F:→ kiminozo:感谢你的讲解^^ 09/28 14:04