日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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


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

#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; }

輸出的結(jié)果:



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

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

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

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

3. 堆: 存放對象, 暫時沒有學(xué)到


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

比如:

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


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

?1> 利用數(shù)組

?char name[] = "abcd";

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

? * 使用場合:字符串的內(nèi)容需要經(jīng)常修改

?

?2> 利用指針

? char *name = "ABCD";

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

? * 使用場合:字符串的內(nèi)容不需要修改,而且這個字符串經(jīng)常使用

?

這次我們講到這里, 下次我們繼續(xù)~~~

轉(zhuǎn)載于:https://www.cnblogs.com/iOSCain/p/4282889.html

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。