永发信息网

C++简单设计题

答案:4  悬赏:60  手机版
解决时间 2021-04-28 01:36
  • 提问者网友:绫月
  • 2021-04-27 18:33

#include<iostream,h>

viod fun(int*s,int n1,int n2){ 定义的int*s是什么?指针?

int i,j,t

i=n1;j=n2;

while(i<j){

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; 这句是什么意思?

i++;j- -;

void main(){

int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

fun(P,0,3);fun(p,4,9);fun(p,0,9);

for(!=0;i<10;i++)

cout<< *(a+i);

cout<<end1;

最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-04-27 19:58

#include<iostream,h>


viod fun(int*s,int n1,int n2){ //定义的int类型的指针s


int i,j,t


i=n1;j=n2;


while(i<j){


t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; //这是三句,每个 ; 代表一行结束。


相当于:


t=*(s+i); //把s+i的地址指定给变量t


*(s+i)=*(s+j); //把s+j的地址赋给s+i的内存地址


*(s+j)=t; //把t的值赋值给指针s+j


其实这是一个内存地址的交换过程,其中的t只是一个临时变量,经过互换后,目的是把s+i 和s+j 在内存中的地址进行调换

全部回答
  • 1楼网友:撞了怀
  • 2021-04-27 22:44
定义的是指针!一般用来访问数组
  • 2楼网友:天凉才是好个秋
  • 2021-04-27 22:36

int *s

的确定义了一个指向一片连续整型存储单元的指针,其实就是用了数组的另一种表示方法。

对于

int a[10];(静态数组定义,就是在内存中申请了一片连续的存储单元,每个单元两个字节,共10个)

定义的数组,如果直接使用数组名a,那么它是指该数组第一个元素所对的地址,也就是说a==&a[0]

那么相反的a[0]==*a (*在这里表示取出指针所对的值)

指针p=a的意思就是这点(在变量声明中*的意思是指声明的变量为指针变量,*p=a的意思就是声明了一个p指针变量,并赋初值为a)

那么怎么用指针去取得数组中其他元素的值呢?*(a+i)就表示a[i]了,其实可以想象*(a+0)==*(a)==*a=a[0]嘛

(在指针的加法中,+1代表移向下一个内存单元,而不是下一个字节,比如,整型指针+1就是移动两个字节,长整指针+1就是移动4个字节)

切记,指针变量是可以用来加减的修改运算的,而数组名只能当作只读指针,例如,在这题中如果p++那么程序可以通过,并且p==&a[1],而a++是不允许的。因为这样会使得a[0]丢失,C语言不允许这样的操作。

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;这句话实际上就是交换a[i]和a[j]的值。

还有什么问题么?

  • 3楼网友:千杯敬自由
  • 2021-04-27 21:29

对 就是指针来的

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;

就是t=a[i]; a[i]=a[j]; a[j]=t; 交换两数的代码

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯