黑马程序员——C语言小节------字符串与指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

1、字符串的初始化,字符串必须以"\0"结尾,"\0"的ASCII码值为0,例如:

char name[] = "jack";         // "jack" == ‘j‘+‘a‘+‘c‘+‘k‘+‘\0‘
 // 都是字符串
char name[8] = "it";
char name2[8] = {i, t, \0};
char name3[8] = {i, t, 0};
char name4[8] = {i, t};

// 不算是一个字符串(只能说是一个字符数组)
char name5[] = {i, t};

2、‘\0‘的作用

      1.字符串结束的标记

      2.printf("%s", name2);

       会从name2这个地址开始输出字符,直到遇到\0为止。

3、strlen函数:计算字符串长度

  1.计算的是字符数,并不是字数。一个汉字算作3个字符

  2.计算的字符不包括\0

  3.从某个地址开始数字符的个数,直到遇到\0为止

4、指针变量的定义

  格式:变量类型 *变量名;

  int *p定义了一个指向整型变量的指针变量p 

  指针变量只能存储地址

  指针就一个作用:能够根据一个地址值,访问对应的存储空间

  指针变量p前面的int:指针变量p只能指向int类型的数据

  任何指针都占用8个字节的存储空间

5、指针变量的使用注意

  指针变量只能存储地址(地址一般以十六进制的形式表示)

  指针变量未经过初始化,不要拿来间接访问其他存储空间

  定义变量时的*仅仅是一个象征,没有其他特殊含义

  *p = 20,这个时候的*的作用:访问指向变量p指向的存储空间

6、指向指针的指针

int a = 10;
    
int *p = &a;
    
int **pp = &p;
  // (*pp) == p
    
  //  *(*pp) == *p == a
    
  //  **pp == *p == a

7、清空指针——P = NULL;

8、输出格式总结

  %d int

  %f float\double

  %ld long

  %lld long long

  %c char

  %s 字符串

  %zd  unsigned long

9、数组与指针

  1.数组元素的访问方式

    1> 数组名[下标]  ages[i]

    2> 指针变量名[下标] p[i]

    3> *(p + i)

  2.指针变量+1,地址值究竟加多少,取决于指针的类型

    int *   +4

    char *   +1

    double *  +8

  3.利用一个指针来接收一个数组,指针变量p指向了数组的首元素,数组名就是数组的地址,也是数组首元素的地址

    例如:

int array[5] = {10, 9, 8, 67, 56};
int *p;
p = ages;   //  p = &ages[0]

 

 掌握:

 定义字符串的2种方式

 1> 利用数组

 char name[] = "itcast";

  * 特点:字符串里面的字符是可以修改的

  * 使用场合:字符串的内容需要经常修改

 2> 利用指针

  char *name = "itcast";

  * 特点:字符串其实是一个常量字符串,里面的字符是不能修改

  * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用

 

总结:

一、指针变量的定义

  1. 格式:变量类型 *指针变量名;

  2. 举例:int *p;   char *p2;

  3. 注意:定义变量时的*仅仅是指针变量的象征

二、利用指针变量简单修改其他变量的值

  1.指向某个变量

int a;

int *p;

p = &a;

   或者

int a;
int *p = &a;

2.修改所指向变量的值

*p = 10;

3.在函数内部修改外面变量的值

int a = 10;
change(&a);
void change(int *n)
{
    *n = 20;
}

三、指针与数组

  1.将数组当做函数参数传入时,会自动转为指针

四、指针与字符串

  1.定义字符串的2种方式

    1> 利用数组

char name[] = "itcast";

    * 特点:字符串里面的字符是可以修改的

    * 使用场合:字符串的内容需要经常修改

    2> 利用指针

char *name = "itcast";

    * 特点:字符串其实是一个常量字符串,里面的字符是不能修改

    * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用

  2.定义字符串数组

    1> 利用二维字符数组

char names[2][10] = {"jack", "rose"};

    2> 利用指针数组

char *names[2] = {"jack", "rose"};

 

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。