在做面試100題中第21題時,發現char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有點區別,以前一直以為是一樣的,但是在該程序中采用字符串指針運行一直出錯。后來在網上查查,果然發現大大的不同。 展示如何出錯 分析:當你需要修改 ...
先看一段代碼 字符串可以用字符指針char 字符數組等來表示。 第一個字符串使用數組開辟的,他是可以改變的量。 字符串指針變量ptr本身是一個變量,用於存放字符串的首地址。可以改變ptr使他指向不同的字符串,但不能改變ptr所指的字符串常量。因為定義指針時,編譯器並不為指針所指向的對象分配空間,他只是分配指針本身的空間,所以 Hello 會被當成常量。放到.rodata區域。參考:剖析.o文件EL ...
2019-02-28 23:39 0 1911 推薦指數:
在做面試100題中第21題時,發現char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有點區別,以前一直以為是一樣的,但是在該程序中采用字符串指針運行一直出錯。后來在網上查查,果然發現大大的不同。 展示如何出錯 分析:當你需要修改 ...
1錯誤代碼 輸出 原因:指針p初始值為a[0],*p是h的地址,h的地址是ascll碼104,而*p+1就是105就是i了(注意*優先級高於+) --- 2正確代碼(其中之一) #include<stdio.h> int main ...
函數中的數組 1. p是一個數組,是一個局部變量,說明這個函數執行完畢之后p數組中的值都被銷毀了 如果單獨使用p,則p表示這塊數組的首地址。函數返回值按值傳遞是p,僅僅傳遞p的地址,而p數組中的內容都被銷毀了。 2. 常量區的字符不能修改。 3. ...
...
功能:輸入一個字符串,判斷是否為回文。 主要鍛煉指針的用法。 1.C版 getchar()函數依次獲取一個輸入,並賦給char型變量a,再通過a賦給char型數組he[]。 當輸入“\n”即回車時,跳出循環。 2.C++版 strlen()取長度 ...
首先搞清楚在c語言中沒有字符串的類型,所以對字符串操作,有兩種形式:可以用字符指針,或者字符串數組(這里的指針變量c,系統會為其重新分配內存。 c程序示例: 1 #include <stdio.h> 2 3 int main() 4 { 5 char ...
1.在c 語言中,將字符串作為字符數組來處理,即字符數組<==>字符串。 2.首先,不論是局部,靜態還是全局數組都必須在定義的時候初始化,否則就得通過其他方式,eg 循環操作,字符串處理函數strcpy() 下面通過在VS2019中運行程序來體現: 注意:不能使 ...
------------------------------------------------------------------------------------ 回顧:[C語言]指針與字符串 指針的使用: 指針的計算 ...