一道C语言的题目,求详细解释pa与pa的区别

2021-03-09 05:41:52 字数 4046 阅读 7289

1楼:匿名用户

这里涉及的主要是对指针的理解;

首先声明四个变量,两个int类型的变量,两个int *类型的变量;int类型的变量存储的是int类型的值,int *类型的变量存储的是一个地址,这个变量可以存储一个int类型的地址,而这个int类型的地址里面毫无疑问存储的是一个int类型的值。

int *pa=&a,可分解成:

int *pa;

pa = &a;//把a的地址赋给pa

这样pa这个指针就指向了变量a的地址;

* 是一个解引用符,在这里,*pa就是指针pa所指向的内存当中存储的变量;也就是说这时*pa与a是等价的。

pb与b的关系也是一样的;

现在就很清楚了:

*pa=3;//往a这个变量里存3

*pb=4;//往b里存4

a=5;//往a里存5

b=6;//往b里存6

pb=pa;//pb这个指针指向变量a的地址*pa + *pb;//就是a + a,并且此时a = 5答案自然是 a

2楼:匿名用户

答案为a、10

你迷惑的可能是这里:

int *pa=&a,*pb=&b;

其实这个相当于:

int *pa,*pb;

pa = &a;

pb = &b;

这个是初始化的地址赋值模式,和指针正常赋值语句*pa=a是不一样的。

3楼:匿名用户

#include

void main()

/*a、10 b、11 c、12 d、7*//*其实我没看懂,试过只后才知道结果是什么*/a=5,b=6

pa=0012ff7c,pb=0012ff78*pa=5,*pb=6

a=5,b=6

pa=0012ff7c,pb=0012ff7c*pa=5,*pb=5

10press any key to continue

c语言中、char (*pa)[5];和char *pa[5]有什么区别

4楼:匿名用户

指针数组:int *pa[5]; //它是五个指针。这五个指针组成一个数组

数组指针:int (*pa)[5]; // pa是一个指针变量。它指向一个有四个数组 void main()

b[strlen(a)]='\0';printf("%s\n",b);}

5楼:匿名用户

pa=&a;实际上是将指针a的地址赋给了pa,或者说是将指针的指针赋给了pa

6楼:匿名用户

char (*pa)[5];不是定义指针数组,是用来定义指向一组数组的指针变量char *pa[5]才是定义指针数组

求救一道c语言的题目,求详细解答过程!非常感谢!!

7楼:楚寒江

1.int i;int f[20]=;

程序定义了一个变量i和一个长度

为20的整型一维数组并把数组的前两个值均初始化为1后面初始化为02.for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];

在i从2到20每次自增1的循环过程中,其实就是在给数组第3个数(数组下标从0开始,所以循环从2开始)到第20个数赋值的过程。数组从第3个数开始,每一个数等于其前两个数的和。

3.for(i=0;i<20;i++)

在i从0到20每次自增1的循环过程中,打印数组。%12表示的是每次占12个字符的位置,if(i%5==0)printf("\n");表示当i自增到5的整数倍时换行,以便可以打出每5个数一行的效果。

4.最后再打印一个换行。

8楼:匿名用户

int f[20]=;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

这个步骤是计算菲波拉契数列。

斐波拉契(fibonacci)数列**于兔子问题,它有一个递推关系,f(1)=1

f(2)=1

f(n)=f(n-1)+f(n-2),其中n>=2即为斐波拉契数列。

for(i=0;i<20;i++)

//以上则是输出了一个5*4的矩阵。最后打印一个换行结束printf("\n");}

9楼:

此函数是斐波那契数:

#include

void main()

;for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

for(i=0;i<20;i++)

printf("\n");

}斐波那契数f(n):当n=0和n=1是,f(n)=1;

n>=2时:f(n)=f(n-2)+f(n-1)此语句:int f[20]=;是初始化,把n=0和n=1的f(n)初始化1;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

这个循环就是递归调用,实现“n>=2时:f(n)=f(n-2)+f(n-1)”

此语句: if(i%5==0)printf("\n");

是输出控制,输出5个后就换行。

此语句:printf("%12d",f[i]);对输出的数进行控制。

此语句:printf("\n");对于for循环输出完后换行,在此处用处不大。

10楼:匿名用户

#include

void main()

;for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];//很经典的一个数学问题,后一个数等于前两个数的和

//f[20]最开始是,后面的都是0

//从f[2]开始运算,即第三个数开始,依次后一个数等于前两个数之和for(i=0;i<20;i++)

printf("\n");}

11楼:华录_起点

解释在程序的注释中:

#include

void main()

;//定义数组中前两个值

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1]; //斐波那契数列for(i=0;i<20;i++)

printf("\n");}

12楼:天澪萃梦

第一个循环将数组f从第三个元素起开始赋值,其值为相邻前两个元素的和,数组f也就是斐波那契数列了

第二个输出循环以12列为单位输出所有元素,并在5的倍数元素后换行

13楼:匿名用户

int f[20]=;----- f[0] = 1,f[1] = 1;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];---------f[2] = f[0]+f[1];一直算到f[19] = f[17]+f[18]

for(i=0;i<20;i++)

关于c语言的一个题目,如图,求大神详细解释,谢谢

14楼:滕肖雅

#include。。。部分是c语言中的一些库,如果不引用这些库函数下面log()函数和sqrt()函数就无法使用;

double fun(int m)定义一个带int 类型参数m,函数名为fun,返回值类型为duoble的函数;

下面是函数的内容定义int型变量作为循环的计数器,还定义了一个double类型的变量s初始值为0.0,用于累加;循环体部分s=s+log(i)如图的注释计算s=ln(1)+ln(2)+ln(3)+.....+ln(m);

最后对s求平方根并返回,要说明的是传入函数的那个参数的做用是累加到ln (m)后停止;

在下面就到了主函数,主函数中调用打印函数前调用fun()函数传入的值为20,也就是说累加到

ln(20),在求平方根。

15楼:雪野

#include

#include

#include

#include

double fun(int m)

main()

C语言选择题,求详解,C语言,题目中的选择题,求详细解析

1楼 匿名用户 正确答案是a a p是字符串指针,用法没有问题 b a是字符数组,不能作为左值被赋值,语法错误 c和d p a是字符类型,不是指针类型,却被赋了一个指针类型的值,肯定得不到预期的结果 2楼 拥抱 选项a是正确的。 解释如下 p是字符串指针,它是一个变量,可以被赋值,指向新的地址。 a...

求解释、一道简单的C语言题目,一道简单的c语言题目,求代码

1楼 流云的歌 我总共做了三个测试。 只有x 0 0 或 null 时,没有给后面的x 1 x 2 赋值时结果是7 0,说明这个字符串是空串。所以是0 当只有x 1 0 时,显示7 1 第三个测试是测试strlen 这个我不用说了。 2楼 小囚love腊肉 x 0 0 x 1 0 这两句赋的值一样,...

一道c语言填空题程序没看懂求详细解释

1楼 include main op1 res 把结果保存到操作数1,方便继续运算opertor getchar 再次输入运算符号 printf d n res 打印结果 注意 由于是没有区分运算符优先级的,完全是按照输入的先后顺序计算的, 所以上面这4个输入的式子要按从左到右计算,不能按照平常乘除...