实验4

发布时间 2023-04-16 20:18:06作者: 陈含章

任务1

#include <stdio.h>
#define N 4

int main() {
    int a[N] = {2, 0, 2, 3};          
    char b[N] = {'2', '0', '2', '3'}; 
    int i;

    printf("sizeof(int) = %d\n", sizeof(int));
    printf("sizeof(char) = %d\n", sizeof(char));
    printf("\n");

    // 输出int型数组a中每个元素的地址、值 
    for (i = 0; i < N; ++i)
        printf("%p: %d\n", &a[i], a[i]);

    printf("\n");

    // 输出char型数组b中每个元素的地址、值 
    for (i = 0; i < N; ++i)
        printf("%p: %c\n", &b[i], b[i]);
    
    printf("\n");
    
    // 输出数组名a和b对应的值 
    printf("a = %p\n", a); 
    printf("b = %p\n", b); 

    return 0;
}

 1.int型数组a在内存中是连续存放的,每个元素占用4个字节

2.char型数组在内存中也是连续存放的,每个元素占用1个字节

3.数组名a对应的值和&a[0]一样,数组名b对应的值和&b[0]一样

任务2

 (1)

#include <stdio.h>
#define N 2
#define M 3
 
int main() {
    int a[N][M] = {{1, 2, 3}, {4, 5, 6}};
    char b[N][M] = {{'1', '2', '3'}, {'4', '5', '6'}};
    int i, j;
 
    // 输出int型二维数组a中每个元素的地址、值
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            printf("%p: %d\n", &a[i][j], a[i][j]);
     
    printf("\n");
 
    // 输出int型二维数组名a, 以及,a[0], a[1]的值
    printf("a = %p\n", a);
    printf("a[0] = %p\n", a[0]);
    printf("a[1] = %p\n", a[1]);
    printf("\n");
 
 
    // 输出char型二维数组b中每个元素的地址、值
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            printf("%p: %c\n", &b[i][j], b[i][j]);
    printf("\n");
 
    // 输出char型二维数组名b, 以及,b[0], b[1]的值
    printf("b = %p\n", b);
    printf("b[0] = %p\n", b[0]);
    printf("b[1] = %p\n", b[1]);
    printf("\n");
    system("pause");
 
    return 0;
}

(2)

#include<stdio.h>
int func(int,int);

int main(){
    int k=4,m=1,p1,p2;
p1=func(k,m);
p2=func(k,m);
printf("%d,%d\n",p1,p2);

return 0;
}
int func(int a ,int b){
    static int m=0,i=2;
    
    i+=m+1;
    m=i+a+b;
    
    return m;
}

 

 任务3