天天看點

C語言字元串常量

C語言字元串常量

一.字元串常量的聲明

char *p = "hello";//指針直接往上戳

一個字元串常量為什麼會給一個指針指派? 字元串常量是一個表達式,既然使表達式就會有值,字元串常量的值是該字元串第一個字母的首位址

同一個字元串常量,它們的值(位址)相同

#include <stdio.h>


       int main(void){
      

    
       char *p = 
       "hello";

    
       char *q = 
       "hello";

    
       printf(
       "%p\n%p", p, q); 
      

      
    
       return 
       0;
      
C語言字元串常量

注意,上面的例子中使用了不同的指針指向同樣内容的字元串常量,輸出的結果卻一樣,這就說明多次使用同樣内容的字元串常量,在記憶體中,都隻儲存一次該字元串常量。

結論:字元串本身是有值的,就是第一個字元的位址。

因為它的值是位址,是以可以這樣用

#include <stdio.h>
 

       int main(void){
      

       printf(
       "%p\n", 
       "hello");

       printf(
       "%p\n", 
       "hello" + 
       1);

    
       printf(
       "%c\n", *(
       "hello" + 
       1));

      
    
       printf(
       "%c\n", 
       "hello"[
       1]);
      

       return 
       0;
      
      
C語言字元串常量

二.注意事項

1.字元串常量和字元數組不同,無法通過下标(指針間接引用)來直接修改。

2.如果要修改字元串的值,我們隻能使用字元數組的形式來存儲字元串,可以這樣聲明:char str[] = "hello";,這樣就可以修改了,它兩本質上的不同是存儲的位置不同。

C語言字元串常量

一.字元串常量的聲明

char *p = "hello";//指針直接往上戳

一個字元串常量為什麼會給一個指針指派? 字元串常量是一個表達式,既然使表達式就會有值,字元串常量的值是該字元串第一個字母的首位址

同一個字元串常量,它們的值(位址)相同

#include <stdio.h>
 

       int main(void){
      

       printf(
       "%p\n", 
       "hello");

       printf(
       "%p\n", 
       "hello" + 
       1);

    
       printf(
       "%c\n", *(
       "hello" + 
       1));

      
    
       printf(
       "%c\n", 
       "hello"[
       1]);
      

       return 
       0;      
C語言字元串常量

注意,上面的例子中使用了不同的指針指向同樣内容的字元串常量,輸出的結果卻一樣,這就說明多次使用同樣内容的字元串常量,在記憶體中,都隻儲存一次該字元串常量。

結論:字元串本身是有值的,就是第一個字元的位址。

因為它的值是位址,是以可以這樣用

#include <stdio.h>
 

       int main(void){
      

       printf(
       "%p\n", 
       "hello");

       printf(
       "%p\n", 
       "hello" + 
       1);

    
       printf(
       "%c\n", *(
       "hello" + 
       1));

      
    
       printf(
       "%c\n", 
       "hello"[
       1]);
      

       return 
       0;      

二.注意事項

繼續閱讀