char p[]和char *p的内存分配位置不同

程序一:

void main()

{

 

char p[]="helloworld\n";

p[0]='H';

printf("%s",p);

system("pause");

}

 

此时,可以输出“Helloworld”。

程序二:

void main()

{

 

char *p="helloworld\n";

p[0]='H';

printf("%s",p);

system("pause");

}

此时,程序出错。

 

说明:

(一)在第一种情况下:程序将p分配空间到栈中,所以可以对其进行赋值,改变p[0]的值。

(二)而在第二种情况中,p的内容被分配到了字符常量中,这时候在栈中对它进行赋值,就会出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`char *p` 和 `char p[]` 在语法上有一些区别,但在某些情况下可以用来表示相同的含义。 1. `char *p`: - 这是一个指针变量的声明,指针类型为 `char*`。 - 它可以指向一个字符数组的首地址,也可以指向一个字符串常量或者动态分配内存区域。 - 当用于表示字符串时,可以通过解引用操作符(`*p`)来访问指针指向的字符。 2. `char p[]`: - 这是一个字符数组的声明,数组类型为 `char[]`。 - 它用于声明一个字符数组,并分配一定数量的内存空间来存储字符。 - 当用于表示字符串时,可以直接通过数组名 `p` 访问数组中的字符。 虽然在某些情况下 `char *p` 和 `char p[]` 可以互换使用,但它们在语义上有一些区别: - `char *p` 是一个指针变量,可以指向不同内存区域,可以更灵活地指向不同的字符串或字符数组。 - `char p[]` 是一个字符数组,它在声明时需要指定数组的大小,大小确定后无法改变。 例如,以下代码演示了 `char *p` 和 `char p[]` 的不同用法: ```c++ #include <iostream> int main() { char *p = "Hello"; // 指针指向字符串常量 char arr[] = "World"; // 字符数组 std::cout << p << std::endl; // 输出 "Hello" std::cout << arr << std::endl; // 输出 "World" p = arr; // 指针指向字符数组 std::cout << p << std::endl; // 输出 "World" return 0; } ``` 总结来说,`char *p` 是一个指针变量,可以指向不同内存区域,而 `char p[]` 是一个字符数组的声明,用于声明固定大小的字符数组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值