tft每日頭條

 > 科技

 > c語言使用指針實現字符串比較

c語言使用指針實現字符串比較

科技 更新时间:2024-11-22 23:31:16
1 指針操作字符串

在學習數組的時候,我們了解了字符串的定義,我們可以定義一個字符數組,用來存放一個字符串,例如:

char array[] = {"abcde"};

char buf[]={"韋凱峰 Linux C/C 零基礎編程教程!\n"};

char buf1[]={"Linux系統編程\nOpenwrt系統開發\n\n"};

char tmp[]={"xxx\n"};

那麼,學習了指針,我們可以定義一個char類型的字符指針變量,字符指針變量存放字符串的地址,那麼,字符指針變量指向字符的地址。例如:

c語言使用指針實現字符串比較(如何操作字符串)1

可以看到,定義了字符指針變量pstr,并且把 array[] 數組的首地址賦給該指針變量,然後,輸出pstr指針變量指向的字符串。

也可以把一個字符串常量,賦給字符串指針。程序測試代碼如下:

c語言使用指針實現字符串比較(如何操作字符串)2

可以看到,我們定義了char類型的指針變量,然後,可以直接把字符串常量賦給字符指針變量。那麼,字符指針變量就存放字符串常量的首地址。

所以,可以輸出字符指針變量指向的字符串常量。

2 字符串常量操作異常

在定義字符串的時候,有如下的形式:

char array[] = "abcde";

定義了字符數組array[ ],存放字符串數據。如下的形式,是定義一個指針,直接指向一個字符串:

char* p1 = "www123"; //把字符串常量賦給指針變量p1

定義字符串指針p1,指向字符串常量。

那麼,array[ ]字符數組中存放的數據是普通的字符數據,可以修改。但是,字符指針p1指向的地址,是存放“字符串常量”,是不允許修改。

程序測試例子如下:

c語言使用指針實現字符串比較(如何操作字符串)3

程序運行結果如下:

c語言使用指針實現字符串比較(如何操作字符串)4

可以看到,執行 array[3] = 'A' 是正确的操作。但是,執行 p1[3] = 'A'的時候,就提示了Segmentation fault錯誤,是内存段錯誤。

因為,字符串指針p1指向的是字符串常量,字符串常量中的字符是常量,不可以被修改。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved