<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
strlen : 用來求一個字串的長度
#include <string.h>
size_t strlen(const char *s);
@s : 指向要計算的那個字串的首地址
“const char *” : 表示在函數呼叫過程中,防止對s指向的空間裡面內容進行修改。
“size_t”: size_t => unsigned int
typede unsigned int size_t ;
返回值: 返回字串s第一個 前面的字元的個數。
atoi:將十進位制的數位字串,轉成整數值
#include <stdlib.h> int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr);
strcpy/strncpy :字串拷貝函數 將一個字串拷貝到另外一個字串上面去。
#include <string.h>
strcpy :用來把src指向的字串,拷貝到dest指向的空間中去,直到遇到 才會結束。
char *strcpy(char *dest, const char *src);
@dest : destination 目的地 ,必須是一個可寫的空間
@src : source 源,從哪裡
返回值: 返回拷貝後目的地字串的首地址
strncpy : 正是為了解決strcpy的這個bug的(strcpy沒有考慮到dest指向的空間的大小問題)
#include <string.h>
char *strncpy(char *dest, const char *src, size_t n);
strncpy: 把src指向的字串前面頂多n個字元拷貝到dest指向的記憶體空間中去。
它到底拷貝了多少個字元呢?
<= n(1) 遇到 拷貝結束,此時 也會被拷貝。
char s[10];
strncpy(s, "12345", 10);
(2) 已經拷貝了n個字元,此時後面的字元就不會被拷貝。
char s[10];
strncpy(s, "0123456789", 10);
strcmp / strncmp :一個一個字元進行比較它們對應的ASCII碼
if c1 > c2
返回1
if c1 < c2
返回-1
if c1 == c2
則繼續比較下一個字元,如果全部相等則返回0
#include <string.h> int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n);
strcat / strncat 字串連線函數
#include <string.h>
strcat : 用來把src指向的字串拷貝到dest指向的字串的末尾(尾部連線)
char *strcat(char *dest, const char *src);
@dest : 指向目標字串(一段可寫的空間)
@src : 指向原始字串
返回值:
返回連線後的字串的首地址(dest指向的首字元地址)
char *strncat(char *dest, const char *src, size_t n);
strncat : 把src指向的字串拷貝到dest末尾,但是它頂多拷貝了n個字元。
(1) 遇到 拷貝結束,此時 也會被拷貝。
(2) 即使沒有遇到 ,但是已經拷貝了n個字元啦。
sizeof(x) : 用來求一個物件或型別所佔位元組數的運運算元,x可以是一個物件(變數、指標、陣列、==),也可以是一個型別。
先求x的型別,然後再求該型別所佔的位元組數
=> typeof(x)
=> sizeof( typeof(x) )
sizeof(指標型別) == 機器字長
32bits的機器 指標所佔位元組數為4
64bits的機器 指標所佔位元組數為8
求陣列的大小
int a[100]; sieof(a[0]) == 4 sizeof(a[1024]) == 4 sizeof(a) == typeof(a) => int[100] sizeof(int[100]) => 4 * 100
char * p[4]; //指標陣列 sizeof(p[0]) == 8 sizeof(p) == typeof(p) => char* [4] sizeof(char *) * 4 == 8 * 4
char (*p)[4];//陣列指標 sizeof(p) == 8
int (*p)(int ,int); //函數指標 sizeof(p) == 8
malloc : 用來動態分配一個size大小的記憶體空間,並且把分配到記憶體空間的首地址返回。
malloc分配的空間的生存期,是隨程序持續性。
malloc分配的空間一旦分配給你,他就不會自動去釋放,一定需要你呼叫free或你的這個進行消亡了!
#include <stdlib.h>
void *malloc(size_t size);
@size : 要分配的空間的大小(以位元組為單位)
返回值:
成功返回分配的空間的首地址
失敗返回NULL.
char * p = (char *)malloc(100);
free : 用來釋放ptr指向的記憶體空間的
ptr指向的記憶體空間,必須是malloc/realloc/calloc這三個函數分配的記憶體空間。
void free(void *ptr);
@ptr : 指向咱們需要釋放的那一塊記憶體的首地址
一般為malloc/realloc/calloc這三個函數的
返回值。
calloc : 它的作用類似於 malloc ,不過它是陣列分配函數, 它分配一個陣列空間,它帶有兩個引數。
void *calloc(size_t nmemb, size_t size);
@nmemb : 表示分配多少元素
@size : 表示每一個元素佔多少位元組
返回值:
成功返回分配的空間的首地址。
失敗返回NULL。
int * a = calloc(10, sizeof(int));
realloc : 用來把ptr(必須是malloc/realloc/calloc這三個函數分配的記憶體空間)指向的動態記憶體,擴充套件到size大小。
void *realloc(void *ptr, size_t size);
@ptr : 指向咱們需要擴充套件的那一塊記憶體的首地址。
一般為malloc/realloc/calloc這三個函數的返回值。
@size : 擴充套件到size大小
返回值:
成功返回分配的空間的首地址
失敗返回NULL。1. size > 原來的大小
realloc用來把ptr指向的記憶體,擴充套件到size位元組,
原來前面的記憶體保持不變,後面新增記憶體內容不會
被初始化。
(1) 原址擴建
(2) 整體搬遷
2. size == 0
realloc(ptr, 0) <=> free(ptr)
在linux下面,程式執行的時候,可以帶引數,只不過所有的引數都當作是字串來處理的。
//argc :儲存你給main傳參的個數 //argv : 用來儲存傳遞給main的所有引數的 //int main(int argc, char * argv[]) int main(int argc, char ** argv) { }
到此這篇關於C語言sizeof與字串處理與動態記憶體分配及main函數引數詳解的文章就介紹到這了,更多相關C語言sizeof內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45