1、格式控制字符,%p、%x、%lu的区别
%p格式符:表示输出地址值,以十六进制的无符号整数表示的,其字长一般与主机的字长相同,在有些编译器里有前导符0x。
%x格式符:以无符号十六进制整数形式(小写)输出,不输出前导符0x。
%lu格式符:unsigned long型,用来输出无符号长整数型。
%ld格式符:用来输出长整型数。
1.1 在大家学习mooc时,运行图中代码的结果与DEV-C++结果可能不同,%p的输出结果中没有前导符号0x,主要原因是编译器工具不同。
3、第1-4周:指针与字符串中1指针与字符串的视频2【1.1.2指针定义】
- 指针 就是保存地址的变量。int p=&i;号表示p是一个指针,int *表示p是一个指向int类型数据的指针,赋值是将p指向变量i,也就是把i的地址赋值给p。
- 指针变量中的 * 可靠近int也可靠近p,但是 * 是p的不是int的,C语言中没有int*这种类型。
- 普通变量的值是实际的值,指针变量的值是具有实际值的变量的地址。
- 作为参数的指针:void f(int *p),当调用f时则需要交给它一个地址:int i=0,f(&i);而不是传递给它这个变量本身或者这个变量的值。
- 符号 * 是一个单目运算符,用来访问指针的值所表示的地址上的变量,*p做作为一个整体使用。
- 函数调用是值的传递,传递地址时,函数内外可通过地址进行通话。
3、第1-4周:指针与字符串中1指针与字符串的视频2【1.1.3指针的应用场景】
- 通过函数调用传递地址,实现交换两个变量的值
- 通过指针,实现函数调用返回多个返回值,有时函数返回运算的状态,运算结果通过指针返回。
- 常见错误:定义了指针变量,没有赋初值,即没有使用指针变量指向任何一个变量,那么初值可能是随机的或者指向一个无法访问的空间,进而导致错误。