求助:数组与指针的差别
在VC下运行时会出错,书上的内容看了好几遍,还是无法理解是在哪个地方出错。求指点。
程序代码:
# include <stdio.h>
int main (void)
{
char * p1 = "Aaaaaaa";
*p1= 'B';
printf (" %s\n", "wwqrreqewr");
}
程序代码:# include <stdio.h>
# include <stdlib.h>
int main (void)
{
char *p1 = "Aaaaaaa";
puts(p1);
p1 = malloc(sizeof(char)); //这时p1已经不指向字符串常量了 指向一个闲置的内存地址
if(p1) *p1 = 'B';
putchar(*p1);
free(p1);
printf (" %s\n", "wwqrreqewr");
}


程序代码:
//把字符串常量中的每个字符分别赋给数组中的每个元素。数组名是指针常量,数组元素是变量。
char str[50] = "Bbbbbbb";
//把字符串常量中第一个字符的地址赋给char *类型指针。ptr1是指针变量。*ptr1是常量。
char * ptr1 = "Ccccccc";
str[0] = 'D'; //给常量赋值,正确。
*ptr1 = 'D'; //给常量赋值,错误。
str++; //常量不能自增运算,错误。
ptr1++; //变量可以自增运算,正确。
ptr1 = str;//虽然改变了指针变量ptr1的值,但是字符串“Ccccccc”其实并没有消失
************************************
如果编译器支持下面代码,那么输出结果会是Wcccccc
char * ptr1 = "Ccccccc";
*ptr = 'W';
printf ("%s\n", "Ccccccc");
************************************

程序代码:
//把字符串常量中的每个字符分别赋给数组中的每个元素。数组名是指针常量,数组元素是变量。
char str[50] = "Bbbbbbb";
//把字符串常量中第一个字符的地址赋给char *类型指针。ptr1是指针变量。*ptr1是常量。
char * ptr1 = "Ccccccc";
str[0] = 'D'; //给常量赋值,正确。
*ptr1 = 'D'; //给常量赋值,错误。
str++; //常量不能自增运算,错误。
ptr1++; //变量可以自增运算,正确。
************************************
//ptr1 = str;//虽然改变了指针变量ptr1的值,但是字符串“Ccccccc”其实并没有消失
//如果编译器支持下面代码,那么输出结果会是Wcccccc
char * ptr1 = "Ccccccc";
*ptr = 'W';
printf ("%s\n", "Ccccccc");
************************************
