日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

字符數(shù)組,字符串及其操作函數(shù),指針

作者:簏嶼 更新時間: 2022-07-19 編程語言

一、字符數(shù)組 與 字符串

char a[10] = {'a','b','c',...};
字符串:多個字符串在一起,用""括起來,以'\0'作為結束標志
 
1、一維數(shù)組
    char a[10] = {"hello\0"};
		puts(a);
		gets(a);
2、二維數(shù)組
    char a[3][10] = {"hello","world","China"};
		puts(a[0]);
		puts(a[1]);
		puts(a[2]);
		puts(&a[0][3]); -- 打印出"lo"
            
對于字符串,定義的時候如果沒有初始化(0),在后面賦值的時候一定要加上'\0',否則會出現(xiàn)亂碼
                 
  如何去打印一維數(shù)組的字符串
       1puts(a);
	   2printf("%s",a);
  如何去打印二維數(shù)組的字符串
       for(i = 0; i < 3; i++)
           1puts(a[i]);
		   2printf("%s",a[i]);

二、字符串操作函數(shù)

1、strlen

頭文件
#include <string.h>
格式
	size_t strlen(const char *s);
功能
	計算給定的字符串長度,不包括'\0'
參數(shù)
	s -- 表示要求長度的字符串
返回值
    給定字符串的長度,不包括'\0'
    
strlen 和 sizeof區(qū)別
    (1)sizeof是一個關鍵字,strlen()是一個函數(shù)
    (2)sizeof會計算'\0'
    (3)sizeof()不能返回動態(tài)分配的內存空間大小
    
strnlen
    size_t strnlen(const char *s, size_t maxlen);
	功能:字符串實際個數(shù) <= maxlen  返回字符串實際個數(shù)
                     > maxlen  返回maxlen

2、strcat

頭文件
	#include <string.h>
格式
	char *strcat(char *dest, const char *src);
功能
	將字符串src追加到dest的末尾
參數(shù)
    dest -- 目標字符串
	src -- 源字符串
返回值
    返回追加之后的新的字符串dest的首地址

char *strncat(char *dest, const char *src, size_t n);
	n -- 追加的最大字符數(shù)量

3、strcpy – 覆蓋

頭文件
	#include <string.h>
格式
	char *strcpy(char *dest, const char *src);
功能
	將字符串src的內容拷貝到首地址為dest的空間
參數(shù)
    dest -- 目標字符串
	src -- 要復制的字符串
返回值
    返回拷貝之后的新的字符串dest的首地址   

    char *strncpy(char *dest, const char *src, size_t n);
		n -- 指定多少個字符復制過去

4、strcmp

頭文件
	#include <string.h>
格式
	int strcmp(const char *s1, const char *s2);
功能
	比較兩個字符串大小,比較ASCII碼,對位比較
參數(shù)
    要比較的兩個字符串
返回值
    s1 > s2 返回大于0的數(shù)
    s1 = s2 0
    s1 < s2 返回小于0的數(shù)
    
   int strncmp(const char *s1, const char *s2, size_t n);
		n -- 指定比較的字符個數(shù)

5、strstr

頭文件
	#include <string.h>
格式
	char *strstr(const char *haystack, const char *needle);

功能
	檢索子串在字符串首次出現(xiàn)的位置
參數(shù)
    haystack -- 被檢索的字符串
    needle -- 要檢索的子串
返回值
    返回needle首次出現(xiàn)的位置,如果沒有返回NULL

三、指針(地址) – 指針是一個變量

1、指針:<存儲類型><數(shù)據(jù)類型> * <指針變量名>;
	數(shù)據(jù)類型:<數(shù)據(jù)類型> + *  --- 構成了一個新的數(shù)據(jù)類型
        代表:指針所指向的數(shù)據(jù)的數(shù)據(jù)類型
    初始化:
		int a = 10;
		int *p = &a;//int *p;
					  p = &a;
	指針變量:實際上也是一個普通變量,特殊在于里面存放的地址
        (也有自己的內存空間)
        如果指針變量沒有賦值,它里面存儲的是隨機地址
        
2、指針的運算符 -- &(取地址) *(取內容)
    int a = 10;
	int *p;
	p = &a;
	*p = *(&a); ==> *p = a;
	&* 是互為逆運算
	
除了數(shù)組名以外,64位操作系統(tǒng)所有的地址用sizeof求大小得到的都是8個字節(jié),32位是4個字節(jié)

3、指針的運算 -- 通過 間接訪問 的形式,去操作原來的變量
    int i = 10;
	int *p = &i;
	
	i = 5; //直接訪問:直接操作i
	*p = 5;//間接訪問:通過i的地址去操作i

	int j = *p*10; --> j = i * 10;

4、指針變量的運算 -- 地址的偏移(一般用于數(shù)組)
    非單獨使用:
   	p++:先使用p中存放的地址,再向高地址位偏移一個數(shù)據(jù)類型單位
    ++p:先向高地址位偏移一個數(shù)據(jù)類型單位,再使用p中存放的地址
    p+N:向高地址位偏移N個數(shù)據(jù)類型單位
    p-N:向低地址位偏移N個數(shù)據(jù)類型單位
    p-q:指針變量 - 指針變量 = 中間相差了多少個數(shù)據(jù)類型單位
    
5、特殊指針
    (1)野指針:沒有初始化 且 沒有賦值的指針
        可能會報段錯誤
        段錯誤:非法訪問內存
        int *p;
		printf("%d\n",*p);
    (2)空指針:指向零地址空間的指針
        一定會報段錯誤
        int *p = NULL;
		printf("%d\n",*p);
    (3)空類型指針(void *) -- 可以存放任何類型的地址
        注意:在使用的時候,一定要進行強轉

原文鏈接:https://blog.csdn.net/qq_64076967/article/details/125835786

欄目分類
最近更新