关于C语言指针的理解

// 三者的区别
char *s = "hello world!";
char s[] = "hello world!";
char s[5];

char *s = “hello world!”;

这个相当于创建了一个指针变量s,指针变量s指向常量“helloworld”。
指针变量s位于栈中,字符串”hello world!”位于常量区;
相当于const char *s = “hello world!”;
所以不能通过s来改变字符串”hello world!”的内容。但是s指向的地址可以改变。如:
s[2] = “A”; √
s = “hi world!”; ×


char s[] = “hello world!”;

这个相当于创建了一个普通数组s,位于栈区,str数组里面的内容可以改变,但是str指向的地址是固定的,不能改变。数组的初始化时必须确定大小。
相当于char * const s[] = “hello world!”;
s[2] = “A”; √
s = “hi world!”; ×


char s[5];

这个相当于创建了一个普通数组s,位于栈区,无内容,但数组大小确定。
相当于char * const s[5];
s[2] = “A”; √
s = “hi world!”; ×

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值