程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 深入理解 C 指針閱讀筆記

深入理解 C 指針閱讀筆記

編輯:關於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 

/*一個數如果是無符號的,那麼盡量去選用 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;		/*代表指針的指向和指針指向的值都不能被修改*/
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved