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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > pytorch >内容正文

pytorch

【C语言进阶深度学习记录】十二 C语言中的:字符和字符串

發(fā)布時(shí)間:2023/12/10 pytorch 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言进阶深度学习记录】十二 C语言中的:字符和字符串 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1 C語(yǔ)言中的單引號(hào)和雙引號(hào)
      • 1.1 雙引號(hào)帶來(lái)的BUG
    • 2 總結(jié)

1 C語(yǔ)言中的單引號(hào)和雙引號(hào)

  • C語(yǔ)言中的單引號(hào)用來(lái)表示字符字面量
  • C語(yǔ)言中的雙引號(hào)用來(lái)表示字符串字面量,存儲(chǔ)于全局的只讀存儲(chǔ)區(qū)

注意上面的字符與字符串的區(qū)別

  • 下面的程序片段是否合法?

上面額三行代碼,看著像是很正常,實(shí)際上問(wèn)題很大。在具體分析上述代碼問(wèn)題之前,我們先給出一個(gè)代碼示例來(lái)看看:

  • 代碼 14-1.c
#include <stdio.h>int main() {char* p1 = 1 ;char* p2 = '1';char* p3 = "1";printf("%s, %s, %s", p1, p2, p3);printf('\n');printf("\n");return 0; }
  • 上述代碼編譯結(jié)果如下:

  • 在程序員的眼中,警告就是錯(cuò)誤上述錯(cuò)誤提示告訴我們6行,7行,12行有問(wèn)題。

  • 運(yùn)行上述可執(zhí)行程序的話,會(huì)產(chǎn)生段錯(cuò)誤

由以上的程序以及編譯與運(yùn)行的情況來(lái)看,由以下幾條知識(shí)點(diǎn)需要我們掌握:

  • 字符字面量,被編譯為對(duì)應(yīng)的ASCII碼
  • 字符串字面量,被編譯為對(duì)應(yīng)的內(nèi)存地址
  • printf() 的第一個(gè)參數(shù),被當(dāng)成是字符串的內(nèi)存地址
  • 內(nèi)存的低地址空間,不能被隨意訪問(wèn)。至于這一點(diǎn),如下內(nèi)存圖所示:

如上圖所示:

  • p1變量的值是0x00000001,地址1是無(wú)法訪問(wèn)的。所以第6行有警告 。 地址0x00000001為什么不能訪問(wèn)可以自行g(shù)oogle

  • p2變量的值是字符‘1’的ASCII碼,也就是31,地址0x00000031也是不能被訪問(wèn)的。(第一條與第二條就印證了內(nèi)存低地址不能被訪問(wèn)的說(shuō)法)

  • p3變量的值是字符串“1” 所代表的地址,在這里是0x080484d0 。 這個(gè)地址是可以被訪問(wèn)的。

  • 至于第12行的警告,是因?yàn)?‘\n’ 的ASCII碼值為 10 ,那么printf 的第一個(gè)參數(shù)就是 10 ,10這個(gè)地址同樣也是不能被訪問(wèn)到的。

1.1 雙引號(hào)帶來(lái)的BUG

代碼:14-2.c

#include <stdio.h>int main() {char c = " ";while( (c == "\t") || (c == " ") || (c == "\n") ){scanf("%c", &c);}return 0; }
  • 上述代碼乍一看沒(méi)問(wèn)題,但是編譯運(yùn)行會(huì)發(fā)現(xiàn)有警告,且運(yùn)行后并不會(huì)執(zhí)行while循環(huán)。
  • 主要原因是雙引號(hào)下空格,表示一個(gè)地址的值。一個(gè)地址值是占用4字節(jié)的,但是字符c是一字節(jié)的,會(huì)產(chǎn)生截?cái)?/li>
  • 因?yàn)榻財(cái)嗔恕K詗hile循環(huán)不會(huì)成立

2 總結(jié)

  • 單引號(hào)括起來(lái)的單個(gè)字符代表整數(shù)
  • 雙引號(hào)括起來(lái)的字符代表字符指針
  • 如果使用字符串對(duì)字符賦值,就會(huì)得到錯(cuò)誤的結(jié)果

總結(jié)

以上是生活随笔為你收集整理的【C语言进阶深度学习记录】十二 C语言中的:字符和字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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