变量在内存中的区域

变量在内存中的区域

这里写图片描述

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

int i1 = 10; 
int i2 = 20; 
int i3;     
const int i4 = 40;

void fn(int i5) 
{
    int i6 = 60;
    static int i7 = 70;
    const int i8 = 80; 
    int* p1 = (int*)malloc(sizeof(int));
    int* p2 = (int*)malloc(sizeof(int));
    char* str = "good";  //等号两端是不同的数据类型,右端自动转型成char*,而"good"这个char数组仍然没有名字。
    //str="abcd";
    //strcpy(str,"12345");
    //str = (char*)malloc(sizeof(char)*10);
    //strcpy(str,"12345");
    //char* pt = str;
    //free(pt);
    //pt = NULL;
    //str = "hello,world";
//    printf("str=%s\n",str);

    char strs[] = "good"; //等号两端是相同的数据类型,右值成为左值
    //strs = "hjkl";
    //strcpy(strs,"hjkl");
    //printf("strs=%s\n",strs);

    //............
printf("--------BSS(未初始化的或为0的)区-----------\n");
printf("&i3 = %p\n", &i3); 
printf("---------只读区------------\n");
printf("&i4 = %p\n", &i4);
printf("str = %p\n", str);
printf("---------全局变量区------------\n");
printf("&i7 = %p\n", &i7);
printf("&i1 = %p\n", &i1); 
printf("&i2 = %p\n", &i2); 
printf("---------堆区-----------\n");
printf("&(* p1) = %p\n", p1);
printf("&(* p2) = %p\n", p2);
printf("---------栈区------------\n");
printf("&str = %p\n", &str);//str指向该常量地址
printf("strs = %p\n", strs);//str在栈上申请空间,将常量内容复制进来,所以是局部变量
printf("&i8 = %p\n", &i8);
printf("&i5 = %p\n", &i5);
}

int main(void)
{
    int i0=10;
    printf("------代码区的符号或数据--------\n");
printf("&main = %p\n", main); 
    printf("------栈区的符号或数据--------\n");
    printf("&i0 = %p\n",&i0);

    fn(i0);
    return 0;
}

这里写图片描述

char str[ ]和char str = (char) malloc(n*)
链接:http://blog.csdn.net/yahohi/article/details/7427724

char * strcpy(char * strDest,const char * strSrc)

{

char * strDestCopy=strDest; //

if ((strDest==NULL)||(strSrc==NULL)) //[1]

throw "Invalid argument(s)"; //[2]

while ((*strDest++=*strSrc++)!='\0'); //

return strDestCopy;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值