1. 程式人生 > 實用技巧 >學習第25天

學習第25天

C語言

  1. 字串表現形式、

    1. 定義初始化、相同的字串所佔記憶體地址不相同、

    2. C語言特殊處理、字串賦給指標是在記憶體中分配出一段類似字元陣列的空間用來存放字串常量、賦值給指標的是首地址、

    3. char a[] = "zi fu chuan";
         	char b[100];
         	int c;
         	for ( c = 0; *(a+c) !='\0' ; c++) // !='\0'  不等於字串結束標記、
         	{
         		*(b + c) = *(a + c);//一個字元一個字元的賦值、將a賦值給b 遇到 !='\0'結束
         	}
         	*(b + c) = '\0';//沒有0 所以加上、
         	printf("a是%s\n", a);
         	printf("b是%s\n", b);
      
    4. 字元指標方式、

      void kaobei(char d[], char e[])//字串陣列名做引數、將實參首地址傳遞給a,b、
          void kaobei(char *d, char *e)//使用指標傳遞、
      {
      	int c = 0;
      	while (d[c]  !='\0')
      	{
      		e[c] = d[c];
      		c++;
      
      	}
      	e[c] = '\0';
      }
      int main()
      {
      	char a[] = "內容 是 123";
      	char b[] = "內容 一定 要比a常";
      	printf("a=%s\n", a);
      	printf("b=%s\n", b);
      	kaobei(a, b);
      	printf("a=%s\n", a);
      	printf("b=%s\n", b);
      	
      }
      
  2. 字串指標做函式引數、

    1. //char a[100] = "內容 是 123";//定義初始化\
      	char a[100] ;
      	//a="內容 是 123";//錯誤的、因為 "內容 是 123"是有地址的、相當於將"內容 是 123"賦值給了a、
      	strcpy(a, "內容 是 123");//解決3行錯誤、strcpy是拷貝函式、2行加上4行相當於1行
      	char* a;
      	a = "內容 是 123";//"內容 是 123"  是字串常量、在內容中是有地址的、
      
    2. 指標變數的值是可以改變的、

    3. char a[] = "內容 是 123";
      
      	char *b = a;
      	b = b + 7;//跳過7個位元組、
      	printf("跳過7個位元組後是 %s\n", b);
      
      
    4. 陣列首地址是不可改變的、

  3. 字串指標變數與字元陣列、

    1. 字元陣列由元素組成、(元素才是有效的記憶體)每個元素存放一個字元、而字元指標中存放的是字串的首地址、字串內容放在字串的陣列中、
      2. 定義初始化、相當於將字串內容拷貝到字串陣列中去、
      3. 指標變數的值是可以改變的、陣列首地址是不可改變的、
  4. 拷貝字串是必須注意其長度、