黑马程序员——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培训、期待与您交流! -------

时间: 2024-10-17 11:07:48

黑马程序员——C语言小节------字符串与指针的相关文章

黑马程序员——c语言的字符串

1. 字符串 1. 什么是字符串 ● 简单的字符串”itcast” ● 一个’i’是一个字符 ● 很多个字符组合在一起就是字符串了 2. 字符串的初始化 ● char a[] = “123”;  和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小 ● “123”其实是由’1’.’2’.’3’.’\0’组成 ● “123”的存储分布 ● 字符串的输出”%s”,’\0’是不会输出的 3. \0的作用 ● 输出char a[] = {‘o’,’k’}; ● 在char a[]

黑马程序员-C语言基础:指针类型与指针和数组、字符串的关系

//指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的存储空间: int *p = &a;//这样一句可以写,此时的*只是一个标志,表示这个*只是表示p是个指针: *p = &a;//这样写就错了:此时*p表示取p指向的空间的值: 指针疑问:指针既然都占据8个字节,那么为什么要划分类型, 是因为当用*p指针取值或者赋值的时候,知道该取几个字节,比

黑马程序员-C语言基础:数组和字符串

数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4]=13};//这种写法也可以,直接给其中角标为3和4的赋值 int args[] = {12,23,32};//中括号中没写数组大小,在大括号中一定要写具体数值 int args['A'] = {2,34,5}; 错误写法: int args[];//这样编译器不知道给你开辟多大的内存空间 int

黑马程序员_C语言总结-基础部分

C语言基础 1.C语言的关键字 1>关键字就是C语言提供的有特殊含义的符号,也称为保留字,C语言中一共有32个关键字,这些关键字都有自己的含义 例如:int double float if  else switch for 等等 2.标示符的概念: 1>标示符就是在程序中自定义的一些名称,比如函数名,变量名,结构体名等等这些都是标示符 2>命名规则: 1>只能由英文字母的大小写和数字以及_下划线组成,且首字母必须为字母或者下划线_ 2>在C语言中是严格区分大小写的,比如if是

黑马程序员_OC语言前期准备

OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应用程序. 拓展名:c语言-.c  OC语言.-m  兼容C++.-mm 注:其实c语言和oc甚至任何一门语言都只是我们为了实现一些功能,达到一些效果而采用的工具,抛开语法的差别外,我想最重要的应该是在解决问题的时候考虑的角度和方法不一样而已,然而这也构成了学习一门语言的重要性. 二.语法预览 (一)

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员-c语言基础:各种数据类型的输出占位符

c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d int a = 1; printf("这个整数是:%d", a); long: %ld; (long 是int得修饰,不能算是一种单独的数据类型,只是比int多了四个字节的存储空间) long long: %lld char : %c float/double : %f  float默认是6位小数输出:可以在%f中控制:例如:%.2f:输

黑马程序员-c语言关于二进制的输出

c语言中的二进制输出是没有占位符的,不像八进制:%o: 和十六进制:x%: c中二进制的输出 1 //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值 2 void printbinry(int num) 3 { 4 int count = (sizeof(num)<<3)-1;//值为31 5 while (count>=0) { 6 int bitnum = num>>count; //除去符号位,从最高位开始得到每一位 7 int byte = bi

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量: