深入理解 C 指针阅读笔记 -- 第一章
上周末。我在图书馆看到了这本很薄的书 -- 《深入理解 C 指针》
这本书中写的内容。个人感觉适合一个刚開始学习的人,内容不是很难。我也读了下,对每一章都做了笔记。笔记都是用代码的形式贴出来。
Chapter1.h
#ifndef __CHAPTER_1_ #define __CHAPTER_1_ /*《深入理解C指针》学习笔记 -- 第一章*/ /*一个数假设是无符号的。那么尽量去选用 size_t 类型*/ /*使用 size_t 类型的时候一定要用对了输出格式*/ void __size_t_test(); //对指针进行加的操作就是指针原来指向的地址加上数据类型的大小乘以加的那个数 //对指针进行减的操作就是指针原来指向的地址减去数据类型的大小乘以减的那个数 void __pointer_add_sub_test(); /*指针用 const 修饰的各种表现*/ void __const_to_pointer(); #endif
Chapter1.cpp
#include "Chapter1.h" #include <stdio.h> /*一个数假设是无符号的,那么尽量去选用 size_t 类型*/ /*使用 size_t 类型的时候一定要用对了输出格式*/ void __size_t_test() { size_t test1 = -1; printf("test1 : %d\n", test1); printf("test1 : %u\n", test1); size_t test2 = 1; printf("test2 : %d\n", test2); printf("test2 : %u\n", test2); /* 输出结果例如以下: test1 : -1 test1 : 4294967295 test2 : 1 test2 : 1 */ } //对指针进行加的操作就是指针原来指向的地址加上数据类型的大小乘以加的那个数 //对指针进行减的操作就是指针原来指向的地址减去数据类型的大小乘以减的那个数 void __pointer_add_sub_test() { int test1 = 1; int* p_test1 = &test1; char test2 = 'a'; char* p_test2 = &test2; printf("p_test1 - 1 address is : %x\n", p_test1 - 1); printf("p_test1 address is : %x\n", p_test1); printf("p_test1 + 1 address is : %x\n", p_test1 + 1); printf("\n"); printf("p_test2 - 1 address is : %x\n", p_test2 - 1); printf("p_test2 address is : %x\n", p_test2); printf("p_test2 + 1 address is : %x\n", p_test2 + 1); /* 输出结果例如以下: p_test1 - 1 address is : 2dfdb8 p_test1 address is : 2dfdbc p_test1 + 1 address is : 2dfdc0 p_test2 - 1 address is : 2dfda6 p_test2 address is : 2dfda7 p_test2 + 1 address is : 2dfda8 */ } void __const_to_pointer() { /*指向常量的指针*/ /*这里的指向常量仅仅是指针觉得是指向常量的*/ int test1 = 1; const int test2 = 2; /*这两个操作都是能够的,可是不能解引用而改动它*/ const int* p_test1 = &test1; const int* p_test2 = &test2; test1 = 3; /*这个是能够的*/ // *p_test1 = 3; 可是这个不行 /*指向很量的常量指针*/ int test3 = 3; int* const p_test3 = &test3; /*指针仅仅能指向很量,由于能够用解引用改动变量的值*/ // p_test3 = &test1; 同一时候,指针的值不能被改动 // int* const p_test4 = &test2; 指针仅仅能指向一个很量,由于能够被改动 /*指向常量的常量指针*/ const int* const p_test4 = &test2; /*代表指针的指向和指针指向的值都不能被改动*/ }