指標和字串常量

2021-06-23 09:07:45 字數 738 閱讀 8911

指標和字串常量

首先比較兩段**

**1

char ch1 = "hello";

*ch1 = 'h'; //ok

ch1[0] = 'h'; //ok

printf("%s\r\n",ch1);

**2

char *ch2 = "world";

*ch2 = 'w'; //執行時錯誤

ch2[0] = 'w'; //執行時錯誤

printf("%s\r\n",ch2);

這裡的「world」是字串常量,而「hello」不是。

**2裡,*ch2和ch2[0]其實就是指『w』,而『w』是常量自然無法修改!

一般定義成const char * = 「world」;

避免上述執行時的錯誤。

如果想修改字串的值,就應該定義成**1的形式!或者如下在堆上申請:

char *s = (char *)malloc(sizeof(char)*6);

strcpy(s, "hello");

s[0] = 'h';

printf("%s\r\n", s);

這個「hello」也不是乙個字串常量,因為是在堆上申請的,也可以用指標來讀和寫!

指標和字串常量

在閱讀c和指標這本書,才發現自己一直對於字串常量的概念不夠清晰。字串常量可以說是乙個指標,char pathname usr temp xx strcpy pathname 10,abcde printf s n pathname 像這3條語句其實是非法的,因為pathname 是乙個指向char型...

C C 字串常量 字元陣列和字元指標

通常,如果在程式中定義了乙個字串,那麼為了節省記憶體,會把相同的字串儲存到乙個單獨的 相同的位置,此時如果用多個字元指標指向它,那麼指標的值會相同。常量字串位於c c 的文字常量區,在程式結束以後由系統釋放。char p string1 example char p string2 example ...

C C 字元陣列 字元指標和字串常量

c 有兩種處理字串的方式,除了沿用c風格字串,另一種方法是借助用string class庫。字串是一系列儲存在連續記憶體位元組中的字元 每個字元對應乙個位元組 所以可以將字串儲存在字元陣列中。以下四種宣告方式都是字元陣列,但是只有第乙個不是字串,其中無效字元 null character 0 其在機...