C语言——初学指针

1. 指针的定义:

指针是一种数据类型,用来表示内存的地址。即表示内容地址的数据类型就是指针类型。

    定义方式:

         数据类型名* 指针变量名

         eg:char* cp;        

                 int* p; .....

     由以下代码可直观了解指针的定义内容。

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main() {
	int a = 1024;
	int* p = &a;
	printf("%p\n", p); // 指针变量的内容
	printf("%p\n", &a); // 变量a的地址
	printf("%d\n", a); // 变量a 的值
	printf("%d\n", *p); // 解引用指针
	return 0;
}

2. 指针的两个重要属性:

    (1)指针变量指向的内容地址;

    (2)指针指向内存地址上元素的数据类型,即每个元素所占内存的大小。

3. 一种的特殊的指针——空指针 void*

      该指针只有地址,没有对应内存。有多种应用,如memset函数。

      同时要避免也指针的使用。

4. 指针运算

      (1) 指针加(减)整数

        指针加(减)整数的结果是指针当前所指向的地址加(减)该整数*内存数据类型长度。

    示例:以下代码可直观了解其运算方式


# include <stdio.h>
int main() {
	int a = 521;
	int* p = &a;
	char* q = (char*)&a;
	printf("%p\n", &a);
	printf("%p\n", p);
	printf("%p\n", p + 1);
	printf("%p\n", q);
	printf("%p\n", q + 1);
	return 0;
}

/运行结果如下
00DFFD94
00DFFD94
00DFFD98
00DFFD94
00DFFD95
请按任意键继续. . .

       (2)指针 - 指针

         其结果为地址实差值除以数据类型长度

          示例如下代码:

# include <stdio.h>
int main() {
	int arr[] = { 1,2,3,4,5,6 };
	int* p = &arr[0];
	int* q = &arr[1];
	printf("%p\n", p);
	printf("%p\n", q);
	printf("%d\n", q - p);
	return 0;
}



运行结果如下:
003DFD28
003DFD2C
1
请按任意键继续. . .

5. 指针与数组

(1)数组型指针

(2)指针数组

发布了21 篇原创文章 · 获赞 2 · 访问量 872

猜你喜欢

转载自blog.csdn.net/weixin_44132627/article/details/103481640