Day7-指针的基础详解、二维数组、数组的几种应用、字符串的简单应用.pages

strcpy(ch1,ch2);拷贝,是将ch2的内容拷贝到ch1中,全部覆盖原有的

strcmp(ch1,ch2);比较,将两个字符串中的字符一个一个比较,用ascii码值比较,如果ch1>ch2,则返回>0,否则<0,空字符的ascii码值为0,而0ascii码值为48

strlen返回字符串的可见长度,不包括 ‘ \0 ’ ,如果字符串中有\0则提前结束,但是\0后有数字则不把\0当空字符处置,当做一个标志,标志后面的数字是八进制,直到遇到超过八进制的数字为止,遇到\x是将后面的数字和字母当成十六进制的标志


指针的声明声明是 数据类型 * p;

int *p,aa;相当于 int * p; int aa;

int *p; p=a;定义一个Int型指针p后,p保存a的地址,则* p表示地址解析符,取出地址p的值,也就是a的地址中的值,但 * p也相当于变量a,相当于* p既可以当成a,又可以当成里面的常量值,所以当有一个int * q = a;时,* p = *q可以成立,它就是a=2; p是一个地址的简写,也可以成为一个地址的名,也可以称为p就是一个地址

一个指针代表一个地址,空指针则代表等待地址赋值

倘若p,q都是同一类型的指针变量,则 p=q;中,p代表变量,q代表常量,也就是吧q中的常量值赋值给变量p,也因此可知,有值得变量可以赋值给另一个变量,赋值的时候,赋的是变量里面的常量值,被赋值的是一个变量改变自身地址中地常量值,改为符号运算符的右边那个值。

指针只定义没有初始化的时候,不能用,用了可能系统就挂了


使用:用来改变一个变量的值,通过指针

  用来使函数返回多个值,通过指针


二级指针:指向一级指针的指针,其内存着一个值,值是一级指针的地址


int x=y=0;因为赋值运算符的右结合性,所以此时y=0时,y的类型没确定就相当于 y=0; y需要先确定类型后,才可以赋值,所以int x,y;x=y=0时成立。


对于二维数组b[i][j]而言,b[i]表示第i行,第一列的地址,可sizeof算出第i行的所有元素的长度

b=b[0]都是第一行,第一列的地址,但是b可以算出所有元素的长度

b[0][0]代表第一行第一列的元素数值


二维数组中,元素的地址是连续的


数组的行数=sizeof(b)/sizeof(b[0]);(总长度/一行的长度=行数)

数组的列数=sizeof(b[0])/sizeof(int);(一行的长度/一个元素的长度=列数)


将二维数组作为参数接收时,行可以不写,列必须写,如果列不符合会自动转换


字符串可见长度为已保存字符的长度,数组的长度也就是可输入的长度,实际长度为设置的长度也就是包含\0的长度


静态初始化剩余的补当前类型的0,所有字符数组会补\0,通常定义的同时初始化

\0:空字符


%s输出字符串,从给定的地址开始到 ’ \0 ‘ 结束


对于b[i][j]b[i]代表地址,b[i][j]代表数值

但对于一位数组b[i],b[i]代表数值


输入时,需要输入到地址内,所以代表数值的用&,代表地址就不用&


字符串长度计算,用循环来判断是否到 ’ \0 ‘ ,用 ‘ i ’ 来保存长度


puts(char);自带换行输出,用puts没法格式化输出

 

gets(char);一种不安全的数组输入,因为不会检测你输入的长度,等于scanf(“%s”,ch); ,但scanf不能有空格,gets可以。


strcat(ch1,ch2)把后面的数组放在前面的数组后面,前一个数组的\0会被覆盖,注意ch1的长度要大于ch1ch2之和


初始化时 ‘ \0 ‘ 不能乱用,否则读取到此位置时,就结束了,但0可以,如果用scanfgets输入,则\0被当成‘ \ ’  ‘ 0 ’ 来存储,而初始化时会被当做结束符


动态赋值数组时,要记得加 ‘ \0 ‘  不然会存储垃圾值


字符串的赋值如:a[i]=” “;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值