字符串的特性

来源:互联网 发布:python 包 编辑:程序博客网 时间:2024/06/10 02:48
1.void  修饰  :
函数的返回值类型  :函数不需要像调用者返回状态的情况下使用
函数形参列表      :不需要往函数内部闯入实参的时候
修饰指针
用void修饰的指针称为万能指针(所有类型的指针中兼容性最强的指针)




字符串特性:


1,字符串的内部原理就是一个所谓的只读型字符型数组
2,字符串是一种特殊类型,而且这个数组是只读的,不能够通过指针更改字符串内部数据
3,字符串后面默认都是以'\0'作为结束符号
4,字符串的初始化赋值分成两种:
1,char string[] = "hello";
ps:里面的过程是,将字符串"hello"的数据复制到string这个数组当中,由于是赋值数据过去string,而string这个数组可以更改,所以我们可以对string这个数组的hello的数据进行更改
2,char *pstring = "hello"
ps:里面的过程是,将字符串的的首地址赋值给pstring这个指针,因此pstring这个指针指向了"hello"这个字符串的内存,由于"hello"字符串类型是只读的,所以不能对pstring进行写入的操作



char string[12] = "hello";        //意思是将hello赋值到string[12]里面去,注意是复制,所以原先字符存在的地址是不能改的,改的只能是string的内存里的数据
        char *pstring = "hello";  //现在定义一个指针指向"hello",所以直接指向了hello原来的地址,所以不能修改的(应为原来的存在.reonly段中,相当于const char *)
  所以 string [0] = 'w';  //是可以的
pstring [0] = 'w'; //是错误的   




5,默认一个字符串,如:"hello",在系统中出现,它的的表现形式都是个指针:const char *的指针。




6,字符串在程序编译的时候,会将他存放在程序段中的只读段(.rodata)中




7,字符串不要在程序中定义太多,这个时候会增加程序体积






可移植数据类型:
uint32_t:
1,可读性强
2,可移植性强
3,广泛应用在系统移植上面






测量大小的函数:


sizeof:他可以测量各种变量,类型的大小
ps:sizeof,他是没有办法去测量一个指针指向的内存有多大,去测量指针只能获取到指针的大小(4个字节)

strlen:专门测量字符串的长度(不包括'\0'),遇到'\0'立即结束




IO函数:
printf的格式参数:
%d:打印有符号整形数int
%u:打印无符号整形数unsigned int
%l:打印有符号整形数long int
%ul:打印无符号整形数unsigned long int
%hd:打印有符号短整形数short int
%hhd:打印有符号整形数char
%o:打印八进制
%x:打印十六进制
%f:打印单精度浮点float
%lf:打印double
%Lf:long double
%e:科学计数法打印
%#x:打印十六进制数,前面加多一个0x
%#o:打印八进制数,前面加多一个0
%p:打印一个指针
%c:打印一个字符
%s:打印字符串
%.2f:打印小数点后两位
%10d:右对齐的打印10个字符(包括原来输出的变量数据),没有的话补空格,
%-10d:左对齐打印















scanf:获取键盘数据到指定的内存中:
1,用法和printf一样,但是只要往format参数中输入格式
2,scanf这个函数,成功的情况下返回成功获取的数据的个数,当你同时获取多个数据时候,其中有一个失败,则scanf立即退出,也是返回你成功获取的数量
3,scanf在获取失败的时候不会自行清除io缓冲区,需要我们自己手动清除,getchar(从IO缓冲区中获取一个字符);








sprintf,snprintf,sscanf:
spirntf和snprintf往指定内存输出数据
sscanf从指定的内存中获取数据













0 0