c语言回收字符串空间,C语言基础知识(字符串,函数,内存空间)
C 語言重點
arc4random() //產生一個隨機數arc4random()A 隨即數對41取余 得到0-40的數余數是正數
arc4random() % 11 + 20// 20 -30的數公式 arcrandom()%(b-a+1) +a對a-b范圍內取余數
pow( a, b)代表a的b次方
sqrtf(a) 表示 對a開方 就a的 1/2 次方
字符數組定義://數組不能參加運算,數組元素能參加運算
// 字符串的字符不能整體賦值,因為字符串是字符數組。需要使用strcpy()
char a[10]="iphone";盡量又這個!! 或者char
a[10]={'i','p','h','o','n','e'}; //定義一個長度為10的字符數組
strlen() 計算字符串的長度
strcpy()?? 字符串的拷貝strcpy(a,b)把b拷貝到a中最好在a,b數組前面定義數組的大小 因為如果b的大小大于a,雖然成功拷貝 但拷貝多余的空間只是暫時給a如果有其他的申請到a多余的空間其中,a只能保持原來的空間!所以不定義不安全
strcat() 字符串拼接strcat(a,b)把b拼接到a后面
strcmp() 字符串比較
函數聲明寫在.h里面
定義寫在.m里面
普通變量形參的值是從 實參的值拷進來(形參和實參不同地址),是兩個變量
數組作為參數,把數組名傳入,即數組的首地址(與普通變量不一樣),形參和實參相同地址,是一個變量
當數組作為參數,數組的長度需要傳進去
結構體值允許初始賦值能全部賦值,不能重復賦值常量,后面只能單個元素賦值。但可以重復讓其他結構體賦值給
如Stu a = {“da”, 23, 43}; 不能再賦值 a = {“tf”, 3, 1}; 但可以 b ={“fd”, 5, 2} a = b;
typedef struct stu Stu //把Stu代替 struct stu
指針? %p//輸出地址
int q=5
int *p=null;// p是指針變量,就是地址變量 (int *)是一個整體NULL 恒等于 Ox00000000
p=&a;//p是常量a的地址
printf("%d",*p)//指針變量前面加* 是表示地址里面的內容
//& : 取地址運算符,根據變量名,獲取首地址
// * :取值運算符,根據地址,獲取對應的值
指針占用多少字節取決余操作系統位數 32位占4位 64位占8位
只要是指針就可以用 -> 因為-> 就是給指針用的
char 型變量 占一個字節空間
sizeof()看一個變量占多少字節
數組作為函數參數的時候,其實是傳遞給函數的數組的首地址
數組不能直接賦值,結構體可以直接賦值,就是將一個結構體對象賦值能另外一個對象
指針可以當數組用 數組可以當指針用//去*在變量右邊加[]
內存:5個區
1.棧區:變量
2.堆區:(重點--動態內存分配)
3.常量區
4.靜態區:全局區 // 靜態變量只能被初始化一次,重復初始化 只有第一次有效
5.代碼區
char str[] = “iPhone”;// 在棧區申請7個字節空間存儲 iPhone 是從常量區的iPhone 拷貝過去
char *str = “iPhone”; // str 是指針變量 在棧區申請8個字節空間(64位)存儲常量區iPhone的地址
常量區只讀不能修改 所以 char *str = “iPhone”; 所以str[1] = ‘p’;是錯誤的
因為改變了常量區,
但str = “dafaf”; 可以 因為指針重新指向另個一常量的地址了
內存操作函數
calloc(n,sizeof(int));//分配n個4個(int)字節的內存里面都清0;
malloc();//不清0;
reallo(void *p,sizeof(int))
void *memset(void *p,int c,sizeof(n) );//從p開始 長度為n所有字節賦值為c ,通常用于清除結構體或者數組元素
void *memcpy(void *p,void *q,sizeof(n));//從q拷貝n個字節到p中宏
#define //宏純大寫定義宏或k+駝峰法(推薦)
如#defineARRRYCOUNT10 或 #define kArrayCouny 10(推薦)無參宏
//帶參宏 #define kMaxValue(A,B) (A>B?A:B)
條件編譯
#ifdef標識符A//如果定義了標識符A
代碼段1
#else//否則
代碼段2
#endif //結束語句
枚舉//成為高手多使用枚舉
enum 枚舉名{ };//常與 switch(){ case:}一起使用
static 用于修飾全局變量
函數指針//函數名代表函數地址,經常與函數回調一起用
int (*p)(類型 形參);
typedef int (*PFUM)(int,int); //相當于 int (*)(int,int)改名PFUM
函數回調int getValue(int x,int y,PFUM p){}
PS: 小二歡迎留言。
總結
以上是生活随笔為你收集整理的c语言回收字符串空间,C语言基础知识(字符串,函数,内存空间)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自学c语言后的感受,C语言感触篇:十年之
- 下一篇: c语言程序 实现简单计算器功能,C语言实