c内存管理--内存容量

来源:互联网 发布:外籍模特知乎 编辑:程序博客网 时间:2024/05/21 06:27

实例1:

char  str[]= “Hello” ;char   *p= str ;int     n= 10;请计算sizeof (str )= 6;//计算str数组大小,注意str是数组而不是指针,所以是6,包括’\0‘sizeof ( p )=4;//p为指针类型,在32位环境下,自然是4个字节了sizeof ( n ) =4;//n为int类型数据,在32位环境下,也是4个字节void Func ( charstr[100]){请计算sizeof( str )=        4;//不要被charstr[100]给诱惑了,实际charstr作为形参是一个指针,4个字节}void *p = malloc( 100);请计算sizeof ( p )//p还是一个指针类型,依然是4个字节=       4;


实例2:

#include <stdio.h>#include <string.h>/*********char*******///只要是指针,则32位是4,64位是8int charSize(char *a,int *b){    printf("%d\n",sizeof(a));//32位是4,64位是8    printf("%d\n",sizeof(b));//32位是4,64位是8    printf("%u\n",strlen(a)); //9(不包含'\0')    }void charSize2(char a[]) //数组退化为指针{    printf("%d\n",sizeof(a)); //32位是4,64位是8}/*******int*********/int intSize(int a){    return a=5;}int intSize2(int data[])//数组退化为指针{    return sizeof(data); //32位是4,64位是8}int main(void){    ///////////char////////////////    /*    char *a = "123456789";  //指针a指向一个常量(相当于const char * a),不可修改其内容    char a[] = "123456789"; //相当于char *const a,地址不可变,内容可变    printf("a: %s\n",a);    a[0]='a';    printf("a= %s\n",a);    */    //char a[]={'1','2','3','4','5','6','7','8','9'};    char a[]="123456789";    printf("%d\n",sizeof(a));  //10(将'\0'也读入)    printf("%u\n",strlen(a)); //9(不包含'\0')        int b=4;    charSize(a,&b);      charSize2(a);        ///////////int/////////////////////    int *c=&b;    printf("%d\n",*c); //4        printf("%d\n",intSize(b)); //5            int data1[] = {1, 2, 3, 4, 5};    int size1 = sizeof(data1);        int *data2 = data1;    int size2 = sizeof(data2);        int size3 = intSize2(data1);        printf("%d, %d, %d\n", size1, size2, size3); //32位是20,4,4 ; 64位是20,8,8    //int &d=b; //c++特有引用(&)    //printf("%d,%d\n",d,b);         return 0;}


0 0