疑惑
一、视频41,第30.56处???(疑问点!!!)常量?
void func(char **ptr) { (*ptr)++; } char str[20] = "hello world" char *ptr =“hello world”; func(&ptr);
str字符数组可以修改,str数组名首元素地址,是常量,不能修改
ptr 是常量,不能修改
*ptr 取指针所指的空间的值
&ptr 指针地址
1.关于为什么是func
问题
问题1:UTF - 8编码格式是什么(已解决)
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。
问题2:printf里%#x是什么(已解决)
%#x格式说明
问题3:什么是段错误?(未解决)
解引用空指针
访问不可访问的内存空间(如内核空间)
访问不存在的内存地址
试图写一个只读内存空间(如代码段)
栈溢出(函数递归调用)
使用未初始化的指针(定义时没有初始化或者已经回收)
推荐网址:[Linux] 什么是 段错误(吐核)?
生疏
生疏1:printf的理解(已解决)
%类
%c字符
%f浮点数
%s字符串
%p指针
%#x格式说明
%e浮点数
生疏2:关于原码、反码、补码的纠纷(已解决)
1.计算机只做加法
2.是补码之间的运算,算完后是结果的补码,
再看符号位,如果是0,直接读,如果是1,需要转成原码
3.正数的原码反码补码都一样
4.符号位,0为正,1为负
5.反码时,是后7位反码
6.负数进来是原码,需要进行反码,补码才能运算
7.对于负数,反码+1是补码(补码-1是反码)
小知识
技巧:存储时看数据,取出时看类型
附
1.exit(0),表示正常退出,exit(1)便是异常退出
2.C语言中汉字在常见的中文编码 GB2312(国标简体中文字符集)和 GBK(国标扩展)使用 2 个字节编码来表示一个汉字,不常用的 GB18030 使用 4 个字节编码来表示一个汉字,更通用的 UTF-8 编码使用 3 个字节编码来表示一个汉字。关于编码方式的更详细的介绍请移步文末参考链接。