指標與字串知識整理 c語言
一、指標
1. 輸出地址
printf("%p",&i); //地址
printf("%x",&i); //十六進位制整數
32bit下兩者相同,但是64bit就不同
2. int* p,q; //int *p, int q; 沒有int*這種型別,而是*p是int
*p++; //++優先順序高於*,但p++為字尾,即取p++以前的值,p指標後移,所以是i=*p,p+1
3. 陣列
int a[10]; 相當於 int *const a; 所以不可以有 int b[]; b=a;
a,&a,&a[0]都是相等的,表示陣列a的起始地址
*a=a[0]表示a[0]的值
4. i,&i,p,*p
int i;
scanf("%d",&i); //i=%d
scanf("%d",i); //&i=%d;
void f(int *p) //若 f(&i)
{
printf("%d",*p); //i
printf("%p",p); //&i
printf("%p",&p); //&p即指標p的地址,即存放i的地址的變數的地址
}
5.關於const 和指標
- int *const p=&i;
指標p不可修改,不可再指向別的地址,不可有p++;
- const int*p=&i;或int const *p=&i
即(*p)為const,不可通過p修改i
可以i++;可以p=&j;不能 *p=j;
二、字串
1.一個字串 :
char str[]={'h','i','\0'}
char str[]="hi"
char *str="hi"
計算字串長度時不包括最後的0,但0要佔空間,比如:
#include <string.h>
strlen(str); //2
sizeof(a)/sizeof(a[0]); //3
2.字串陣列:
- char str[][5]={"haha","hi",} //hello的佔用6個,會報錯
ps:在c語言中,若有 char str[][10]={"hello""hi"}<==>{"hellohi"}
- 雙指標和二維陣列的區別
char **a; //a是一個指向一個指標,該指標指向一個字元(串)
char a[][10] //a[i]-->char [10]
char *a[] //a[i]為一個指標,指向某處字串
4.字串輸入輸出
單字元輸入輸出int putchar(int c) //返回寫出了幾個字元,正常為1,有誤EOF=-1
int getchar() //返回E0F=-1表示輸入結束 CTRL-Z(win) CTRL-D(unix)
3.字串操作
char *s="hello";
char *s2="hello";
s1和s2都只指向hello字串,儲存同一地址,而hello存放的位置為只讀,所以不可以有 s[0]='H'進行修改
如果要修改,則需要 char s[]="hello"即可修改
當傳遞引數 或需要動態分配陣列空間時,使用指標
即字串陣列傳入函式中時,函式無法對其修改
避免字元陣列越界,如
char s1[7];
char s2[7];
scanf("%6s",&s); //一個字串最多6個字元不包括\0
輸入:1234567 //則s1:123456, s2:7 此時不管空格和回車
不可以 char *str; scanf("%s",str); 當str本身指向的地址為有害的時候,有可能會出錯
4.字串函式
<string.h>
size_t strlen(const char*s); //不包括‘\0’
int strcmp(const char*str1, char *str2) //0:str1==str2, -1:str1<str2
str1[]="abc";str2[]="Abc";
strcmp(str1,str2); //32: 'a'-'A'
int strncmp(const char*str1, char *str2,size_t n) //前n個字元比較
char *strcpy(char *restrict dst, char *restrict src) //src-->dst
char *strcat(char *restrict s1, char *restrict s2) //s1s2, s1需要有足夠的空間
char *strchr(char *str, int c) //返回NULL表示沒找到
charstr[]="hello";
char *c;
c=strchr(str,'o');
printf("%c",*c); //'o'
char *strrchr(char *str, int c) //從右邊開始找
安全版本:
char *strncpy(char *restrict dst, char *restrict src,size_t n)
char *strncat(char *restrict s1, char *restrict s2,size_t n)
相關推薦
指標與字串知識整理 c語言
一、指標1. 輸出地址printf("%p",&i); //地址 printf("%x",&i); //十六進位制整數32bit下兩者相同,但是64bit就不同2. int* p,q; //int *p, int q; 沒有int*這種型別,
嵌入式C語言--指標與字串
使用指標這一工具來操作字串。 定義字串變數的初始化方法 char *strptr = "liefyuan"; char strarray1[] = "liefyuan"; char strarray2[8] = "liefyuan"; char strarray3[8] = {'
《C++語言程式設計基礎》學習之陣列指標與字串
陣列元素在記憶體中順次存放,它們的地址是連續的。元素間實體地址上的相鄰,對應著邏輯次序上的相鄰。 陣列名字是陣列首元素的記憶體地址,陣列名是常量,不能被賦值 陣列名是陣列的指標,指向首個元素的地址,多維陣列的n-1維是指標一維陣列初始化: 在定義陣列時給出陣列元素的初始值:列
嘔心瀝血整理C語言指標大全,都在這裡了!
前言 相信大多數的同學都是第一門能接觸到語言是C/C++,其中的指標也是比較讓人頭疼的部分了,因為光是指標都能專門出一本叫《C和指標》的書籍,足見指標的強大。但如果不慎誤用指標,這些指標很大可能就會像惡魔一樣把你的程式給直接搞崩潰。 3個月前,我編寫了一份這些指標都是惡魔嗎?.c的檔
C++指標與字串
C語言裡沒有字串資料型別,要想獲得字串的表示形式利用字元陣列 #include<iostream> using namespace std; #include<stdlib.h&g
C++初學初練數學指標與字串之矩陣初練
#include <iostream> #include <string> #include <cmath> using namespace std; class Matrix { public: Matrix(int,int); ~
數據結構與算法 基於c語言篇
相互 線性 內存 例子 c語言 基於 數據結構 align 四種 學習數據結構與算法走向深藍之路 第一章:數據結構與算法概念型 數據結構:數據之間的相互關系,即是數據的組織形式. 基本組成:{ 數據:信息的載體 數據元素:數據基本單位: } 其結構形式有四種: 1,集合結構
《數據結構與算法分析—C語言描述》pdf
動態 https con 設計 ear 詳細介紹 nbsp -i b- 下載地址:網盤下載 內容簡介 編輯 《數據結構與算法分析:C語言描述(原書第2版)》內容簡介:書中詳細介紹了當前流行的論題和新的變化,討論了算法設計技巧,並在研究算
算法 - 棧與隊列(C 語言實現)
元素 語言 訪問規則 並且 下標 出棧 數據結構 規則 算法 目標: 理解 棧 與 隊列 這兩種數據結構, 並且知道如何應用。 算法 + 數據結構 = 程序 一、堆棧 堆棧是一組元素的集合,類似於數組,但數組可以按下標訪問,堆棧的訪問規則只能為push 與
【數據結構與算法分析——C語言描述】練習1.1——選擇問題
problem 內容 語言 log %d include oid define signed 本部分內容來自http://www.cnblogs.com/mingc,筆者在此只用於整理學習。 問題描述:編寫一個程序解決選擇問題。令k=N/2。畫出表格顯示你的程序對於N為
《數據結構與算法分析-C語言實現》 馬蹄棋盤
efault def flag mes pan 設計 The chess 嘗試 問題描述 國際象棋的棋盤為8×8的方格棋盤。現將“馬”放在任意指定的方格中,按照“馬”走棋的規則將“馬”進行
數據結構與算法分析 c語言描述 pdf 高清下載
analysis 其他 算法設計 研究 and 處理方法 機械 算法分析 arch 網盤下載:數據結構與算法分析 c語言描述 pdf 高清下載 – 易分享電子書PDF資源網 作者: [美] Mark Allen Weiss 出版社: 機械工業出版社 副標題: C語言描述
字串處理(c語言)
[提交] [統計] [提問] 題目描述 讀入兩個字串,字串除了數字還可能包括 ‘—’、‘E’、‘e’、’.’,相加之後輸出結果,如果是浮點型,要求用科學計數法表示(最多包含10個有效數字)。 輸入描述 輸入包含多組測試資料。 每組輸入佔兩行,每行一個字串,測試資料保證字串
字串連線 (c語言)
題目描述 將給定的字串連線起來。書中的演算法描述如下: 圖:字串連線演算法 輸入描述 三對字串,每對字串佔一行,用空格隔開。每個字串只包含數字和英文字母大小寫且長度不超過100。 輸出描述 將後一個字串連線到前一個字串後面,如果結果字串長度超過100,輸出一行“Res
02-線性結構2 一元多項式的乘法與加法運算(C語言 + 註釋)
設計函式分別求兩個一元多項式的乘積與和。 輸入格式: 輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入一個多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。 輸出格式: 輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項
Bitmap 優化與相關知識整理
Bitmap圖片佔用記憶體計算: Bitmap圖片在載入到記憶體的時候是按照:寬*高*畫素點位數來計算的。你可以把圖片看成是由width行、height列的矩陣組成,每一個矩陣元素代表一個畫素點,每一個畫素點都是1byte整數倍的資料,這個資料越大,表示的色彩就越豐富,圖片的顯示質量就越高。Bi
指標9(指標與字串)
例題 應用字元指標,將字串“How are you!”從a陣列複製到b陣列。 #include<stdio.h> int main() {char a[]="How are you!",b[20]; char *s1,*s2; s1=a; s2=b; while(*s
指標與字串、指標與函式
標題1、 指標與字串的千絲萬縷 由於在C語言中,是通過字元陣列來儲存字串的,因而前面通過指標對一維陣列和二維陣列的操作方法,同樣適用於字串。其實,對字串的操作最好採用字串操作函式。 #include<stdio.h> int main() { char name[12]
一級指標、二級指標與字串
c語言中沒有字串型別,通過字元陣列來模擬字串,字串以‘\0’結束。 一、一級指標: 字元陣列的定義: 1.指定長度:char buf[100]={‘a’,‘b’}; 或char buf[100]=“ab”; 如果初始化的字元個數大於陣列長度,將會出現編譯錯
Linux-C基礎知識學習:C語言作業-輸入m、n,並把m~n之間的不能被3整除的數輸出
Linux基礎知識學習 C語言作業:輸入m、n,並把m~n之間的不能被3整除的數輸出 //輸入m、n,並把m~n之間的不能被3整除的數輸出 #include <stdio.h> ma