指向“字符串常量”和“指向常量的指针”的指针

在编写用于实现strcpy的仿真时亚博vip登陆亚博电子竞技 ,在修改目标字符串时,发生了编译错误。

void my_strcpy(char * dest,const char * str)

{

assert(str!= NULL);

while(* dest ++ = * str ++)

{

;

}

}

int main()

{

char str1 [50] =“世界你好”;

char str2 [] =“ {0};

char * str3 =“ 123456789”;

my_strcpy(str2银河体育官网 ,str 1);

my_strcpy(str3,str 1);

printf(“%s \ n”,str 2);

printf(“%s \ n”,str 3);

system(“ pause”);

返回0;

}

这是此代码,第一次复制并可以打印指向字符常量的指针,但是第二次无法编译。查看在线信息后,我了解到:

指向“字符串常量”和“指向常量的指针”的指针

前一个字符串是一个常量亚冠买球 ,而后一个指针是一个常量。

常量是“不允许修改的金额”,所以

前者是“请勿修改字符串”指向字符常量的指针,后者是“请勿修改指针”

例如:

const char * p =“你好”; //指向“字符串常量”

p [0] ='X'; // 错误!我想修改字符串的第一个字符。但是常量不允许修改

p = p2; // 正确的!让p指向另一个指针。

char * const p =“你好”; //指向字符串的“常量指针”

p [0] ='X'; // 正确的!可以修改字符串,因为字符串不是常量

p = p2; // 错误!指针是一个常量,不允许修改p的点

顺便说一句。

char const *和const char *相同。 const的位置在char的左侧或右侧相同。

常量指针的const应该写在*星号的右边。

将常量指针写入常量字符串的方法是const char * const p =“ xx”; 2 const

老王
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83586660、0755-83583158 传真:0755-81780330
邮箱:info@qbt8.com
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83174789 传真:0755-83170936
邮箱:info@qbt8.com
地址:天河区棠安路288号天盈建博汇创意园2楼2082
电话:020-82071951、020-82070761 传真:020-82071976
邮箱:info@qbt8.com
地址:重庆南岸区上海城嘉德中心二号1001
电话:023-62625616、023-62625617 传真:023-62625618
邮箱:info@qbt8.com
地址:贵阳市金阳新区国家高新技术开发区国家数字内容产业园5楼A区508
电话:0851-84114330、0851-84114080 传真:0851-84113779
邮箱:info@qbt8.com