实验六


#include <stdio.h>
#define N 4

int main()
{
    int x[N]={1,9,8,4};
    int i,*p=x;
    
    /*数组方式*/ 
    for(i=0;i<N;i++)
       printf("%d",x[i]);
    printf("/n");
    
    //指针方式1 
    for(i=0;i<N;i++)
       printf("%d",p[i]) ;
    printf("/n");
    
    //指针方式2
    for(;p<x+N;p++)
       printf("%d",*p) ;
    printf("/n");
    
    //指针方式3
    p=x;
    for(i=0;i<N;i++)
       printf("%d",*(p+i)) ;
    printf("/n");
    return 0;

 } 

实验六

 

 1.2

#include <stdio.h>
#define N 4

int main()
{
    char x[N]={'1','9','8','4'};
    int i;
    char *p;
    
    //数组方式 
    for(i=0;i<N;i++)
       printf("%c",x[i]);
    printf("/n");
    
    //指针方式1
    p=x;
    for(i=0;i<N;i++)
       printf("%c",p[i]);
    printf("/n");
    
    //指针方式2
    for(i=0;i<N;i++)
       printf("%c",*(p+i));
    printf("/n");
    
    //指针方式3
    p=x;
    for(;p<x+N;p++)
       printf("%c",*p);
    printf("/n");
     
    return 0; 
    
}

实验六

 

1、p地址是2000,++p为2004(整型)

2、p的地址是2000.++p的地址是2001(字符型)

3、不同的原因是不同的指针变量类型对应所占字节数不同

 2

#include<stdio.h>
int main()
{
    int x[2][4] = { {1,9,8,4}, {2,0,2,2}} ;
    int i,j;
    int *p;
    int (*q)[4];
    
    //数组名访问 
    for(i=0;i<2;i++)
    {
        for(j=0;j<4;j++)
          printf("%d",x[i][j]);
        printf("/n");
    }
    
    //指针q访问(行指针) 
    for(q=&x[0];q<x+2;q++)
    {
        for(j=0;j<4;j++)
        printf("%d",*(*q+j));
        printf("/n");
        
    }
    //指针p访问(列指针)
    for(p=&x[0][0],i=0;p<&x[0][0]+8;p++,i++)
    {
        printf("%d",*p);
        if((i+1)%4==0)
        printf("/n");
     } 
    return 0;
}

实验六

 

1,2004

2.2016 

2.1

#include<stdio.h>
int main()
{
    int x[2][4] = { {1,9,8,4}, {2,0,2,2}} ;
    int i,j;
    int *p;
    int (*q)[4];
    
    //数组名访问 
    for(i=0;i<2;i++)
    {
        for(j=0;j<4;j++)
          printf("%d",x[i][j]);
        printf("/n");
    }
    
    //指针q访问(行指针) 
    for(q=&x[0];q<x+2;q++)
    {
        for(j=0;j<4;j++)
        printf("%d",*(*q+j));
        printf("/n");
        
    }
    //指针p访问(列指针)
    for(p=&x[0][0],i=0;p<&x[0][0]+8;p++,i++)
    {
        printf("%d",*p);
        if((i+1)%4==0)
        printf("/n");
     } 
    return 0;
}

实验六

 

 1.2001

2.2005

3.1与2是因为数据类型不同,p q不同是因为一个是行指针,一个是列指针。

3

#include <stdio.h>
#include <string.h>
#define N 80

int main()
{
    char s1[] = "C, I love u.";
    char s2[] = "C, I hate u.";
    char tmp[N];
    
    printf("sizeof(s1) vs. strlen(s1): /n");
    printf("sizeof(s1) = %d/n", sizeof(s1));
    printf("strlen(s1) = %d/n", strlen(s1));
    
    printf("/nbefore swap: /n");
    printf("s1: %s/n", s1);
    printf("s2: %s/n", s2);
    
    printf("/nswapping.../n");
    strcpy(tmp, s1);
    strcpy(s1, s2);
    strcpy(s2, tmp);
    
    printf("/nafter swap: /n");
    printf("s1: %s/n", s1);
    printf("s2: %s/n", s2);
    
    return 0;
}

实验六

 

 1.数组s1的大小是13

    sizeof(s1)算数据类型在储存空间中占用字节数

    strlen(s1)统计字符串的长度

2.不可以

3.交换了

3.1

#include <string.h>
#define N 80

int main()
{
    char *s1 = "C, I love u.";
    char *s2 = "C, I hate u.";
    char *tmp;
    
    printf("sizeof(s1) vs. strlen(s1): /n");
    printf("sizeof(s1) = %d/n", sizeof(s1));
    printf("strlen(s1) = %d/n", strlen(s1));
    
    printf("/nbefore swap: /n");
    printf("s1: %s/n", s1);
    printf("s2: %s/n", s2);
    
    printf("/nswapping.../n");
    tmp = s1;
    s1 = s2;
    s2 = tmp;
    
    printf("/nafter swap: /n");
    printf("s1: %s/n", s1);
    printf("s2: %s/n", s2);
    
    return 0;
}

实验六

 

 1.s1存放字符串首字母地址

    sizeof统计char型指针变量占的字节数,strlen计算的是实际长度

2,可以

3,交换的是指针所指的位置,没有

4

 

原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/267317.html

(0)
上一篇 2022年6月15日
下一篇 2022年6月15日

相关推荐

发表回复

登录后才能评论