1.5 一级指针内存模型(初学者重点)


要站在内存的角度看c语言。

int main()
{
   //全局区存放一份“aaaa”,然后再把“aaaa”拷贝到栈区分配的20个字节空间内
    char buf[20]="aaaa";

//全局区存放一份“bbbb”,然后再把“bbbb”拷贝到栈区分配的5个字节空间内
    char buf2[] = "bbbb";

//全局区存放字符串,再把字符串首地址赋给p1
    char *p1 = "111111";

//首先在堆区分配100个字节内存空间,然后在栈区分配4个字节的变量p2,存放首地址
    char *p2 = malloc(100);

//把字符串拷贝到p2所指向的内存空间
    strcpy(p2, "3333");
}

这里写图片描述
指针变量p1,p2在栈区,而它们所指向的字符串在只读区。
而buf【20】 = ”addsdf“,buf在栈区分配内存,可以修改。

void main()
{
    char *p = "abcd";
    char p1[] = "abcd";

    p[2] = 'e';//p是一个指向常量区数据的指针,不能修改常量区的内容
    p1[2] = 'd';//而p1[]是一个字符数组,在栈上分配内存,可以修改

    system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值