C语言内存分配

#include <stdio.h>
#include <stdlib.h>

int main(){
    int *ptr = NULL;
    int num, i;
    printf("请输入待录入整数的个数:");
    scanf("%d", &num);

    ptr = (int *) malloc(num * sizeof(int));

    for(i = 0; i < num; i++){

        printf("正在录入第%d个整数:",i + 1);
        scanf("%d", &ptr[i]);
    }

    for(i = 0; i < num; i++){

        printf("第%d个整数是:",i + 1);
        printf("%d ", ptr[i]);
    }
    putchar('\n');
    free(ptr);


    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main(){

    int *ptr;

    ptr = (int *)malloc(sizeof(int));

    if(ptr == NULL)
    {
        printf("分配内存失败");
        exit(1);
    }

    printf("请输入一个整数:");
    scanf("%d", ptr);
    printf("你输入的整数是:%d", *ptr);
    free(ptr);//释放内存空间 

    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <String.h>
#define N 10
int main(){
    int *ptr = NULL;
    int i;

    ptr = (int *) malloc(N * sizeof(int));
//  ptr = (int *) calloc(N * sizeof(int));//等价 
    if(ptr == NULL){
        exit(1);
    }
    memset(ptr, 0, N *sizeof(int));

    for(i = 0; i < N; i++){
        printf("%d ", ptr[i]);
    }
    putchar('\n');
    free(ptr);
    return 0;
}
#include <stdio.h>
#include <stdlib.h> 
#include <string.h>

int main(void){
    int *ptr1;
    int *ptr2;

    ptr1 = (int *)malloc (10 * sizeof(int));

    ptr2 = (int *)malloc (20 * sizeof(int));

    //将ptr1拷贝到ptr2;
    memcpy(ptr2, ptr1, 10) ;
    free(ptr1);
    //.....
    free(ptr2);

    return 0 ;
}
#include <stdio.h>
#include <stdlib.h>


int main(void){
    int i, num;
    int count = 0;
    int *ptr = NULL;

    do{
        printf("请输入一个整数:-1表示结束:");
        scanf("%d", &num);
        count++;
        ptr = (int *) realloc(ptr, count * sizeof(int));//动态分配 
        if(ptr == NULL){
            exit(1);
        }
        ptr[count - 1] = num;
    }while(num != -1);

    printf("请入的整数分别是:");
    for(i = 0;  i < count; i++){
        printf("%d ", ptr[i]);

    }


    return 0;
} 

猜你喜欢

转载自blog.csdn.net/yang10560/article/details/76831553
今日推荐