日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言基础:C语言指针(6) - 指针和字符串

發布時間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言基础:C语言指针(6) - 指针和字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一節我們講到了指針和數組, 這次我們來講解一下指針和字符串, 這次的內容和上一節有相似的地方, 也有全新學習的地方, 讓我們一起來看看吧~~


下面我們來看一個小例子:

#include <stdio.h>int main() {char name[] = "abcde";name[0] = 'A';printf("%s\n", name);char *name2 = "it";name2[0] = 'I';printf("%s\n", name2);return 0; }

輸出的結果:



第一個輸出的結果為Abcde, 第二個輸出不了, 程序直接崩潰了, 這是為什么呢? 按照我們上一節課所學的內容, char *name2指向的地址是"it", 這是沒錯的, 但為什么不能修改呢? 讓我們來仔細研究一下:

這里涉及到內存的問題, 我們來看看內存有幾種常用的方式:

1. 常量區: 存放一些字符串常量, 比如像char *name2;

2. 棧: 存放局部變量, 比如像char name[];

3. 堆: 存放對象, 暫時沒有學到


存放在棧里的變量, 是可以隨意賦值修改的, 而存放在常量區里的是不能隨意修改, 并且是會緩存起來, 等待隨時調用.

比如:

char *name = "ab";char *name2 = "ab";
其實上面兩個指針變量的地址是一樣的, 因為是存在常量區里, 當有變量調用, 常量區就會返回給變量調用, 如果沒有調用, 則一直存放在常量區, 好處在于不用再重新給該常量字符串重新分配內存.


我們必須掌握定義字符串的兩種知識:

?1> 利用數組

?char name[] = "abcd";

? * 特點:字符串里面的字符是存儲在棧上, 是可以修改的

? * 使用場合:字符串的內容需要經常修改

?

?2> 利用指針

? char *name = "ABCD";

? * 特點:字符串其實是一個常量字符串,是存儲在常量區里面的, 所以是不能修改

? * 使用場合:字符串的內容不需要修改,而且這個字符串經常使用

?

這次我們講到這里, 下次我們繼續~~~

轉載于:https://www.cnblogs.com/iOSCain/p/4282889.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C语言基础:C语言指针(6) - 指针和字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。