網站首頁 編程語言 正文
c語言輸出字符指針問題
例如定義一個 char * p = "hello";的字符指針
首先搞清楚在c語言中沒有字符串的類型,所以對字符串操作,有兩種形式:可以用字符指針(為什么不叫字符串指針,我個人覺得,字符指針針對的是單個字符的操作,即指針操作,所以就叫它字符指針吧。。。)
或者字符串數組(這里不在討論字符串相關問題,前面博客有討論過)這里的指針變量p,系統會為其重新分配內存。
"talk is cheap , please show me your code"
說多無用,放碼過來
有人會問,p不是指針變量嗎?但是為什么printf("%s",p)他為什么打印的不是地址?
答:
是的p肯定是指針變量,它也一定是地址,但是別忘了在C語言中,系統都會默認在字符串末給我們加上\0用于結束字符串,所以用printf()輸出時候,只要你打印格式是%s,系統知道我們要輸出字符串,而且系統也可以確定字符串的長度,所以當你用%s打印字符指針p的時候就會輸出字符串,如果你是以地址打印格式輸出的話,系統就會給我們打印出地址, 如果你是解指針(*p),那么系統就取p指針指向的內容,此時看你自己以什么格式輸出,就用什么格式打印。
注意:
在字符指針中p 、*p 和&p的區別:p是指針變量指向字符串首元素(前提對p指針沒有進行指針操作),p中存放首元素的地址(一旦被初始化就,系統就為我們分配好了地址,而且地址也不能改變,因為字符指針是一個只讀變量,你不能企圖對一個初始化好的指針進行內部修改),而*p是對指針變量p進行解引用操作,也就是指針所指向的內容,而&p是對指針變量取地址,所以也就肯定不會和p的值相等,因為字符指針系統會為其分配內存,p的值是字符串首元素的地址。
c語言指針求字符串長度
int stren(char* str){
char* start=str;
char* end=str;
while(*end!='\0'){
end++;
}
return end-start;
}
#include<stdio.h>
int main(){
char arr[]="bit";
int len=stren(arr);
printf("%d\n",len);
return 0;
}
原文鏈接:https://blog.csdn.net/littesss/article/details/71037908
相關推薦
- 2022-05-06 C++提取文件名與提取XML文件的方法詳解_C 語言
- 2022-09-03 Python?pandas找出、刪除重復的數據實例_python
- 2022-08-17 create-react-app項目配置全解析_React
- 2024-02-28 自定義類模擬BufferedReader的readLine()功能
- 2023-03-17 python?函數、變量中單下劃線和雙下劃線的區別詳解_python
- 2022-07-17 關于elasticsearch連接時斷時續以及Kibana出現server is not ready
- 2022-09-04 Python?Matplotlib繪制箱線圖boxplot()函數詳解_python
- 2023-01-08 Flutter開發技巧ListView去除水波紋方法示例_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支