C语言第16天,初始指针

这篇博客探讨了C语言中指针和数组的关系,包括指针解引用访问不同类型变量的字节数、指针步长以及数组与指针在内存中的表示。通过示例代码展示了指针加减运算的实质,并解释了数组名作为指针的特性,以及如何通过指针遍历和修改数组元素。同时,文章还涉及到了二级指针的使用,展示了如何通过二级指针改变一级指针所指向的值。
摘要由CSDN通过智能技术生成
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {
	//指针类型决定了指针进行解引用的时候,能够访问空间的大小
	//int*p; *p能够访问4个字节
	//char*p; *p能够访问4个字节
	//double*p; *p能够访问8个字节
	int a = 0x11223344;
	int* pa = &a;
	char* pc = &a;
	double* pd = &a;
	printf("%p\n", pa);
	printf("%p\n", pc);
	printf("%p\n", pd);
	printf("-------------\n");
	//指针类型决定了:指针走一步走多元(指针的步长)
	//int*p; p+1 --> 4
	//char*p; p+1 --> 1
	//double*p; p+1 --> 8
	printf("%p\n", pa+1);
	printf("%p\n", pc+1);
	printf("%p\n", pd+1);
	return 0;
}
012FFA3C
012FFA3C
012FFA3C
-------------
012FFA40
012FFA3D
012FFA44
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {
	int arr[10] = { 0 };
	int* p = arr;//数组名-首元素的地址
	
	printf("%p\n", arr);//首元素的地址
	printf("%p\n", arr+1);

	printf("%p\n", &arr[0]);
	printf("%p\n", &arr[0]+1);

	printf("%p\n", &arr);
	printf("%p\n", &arr+1);
	
	//1.&arr - &数组名 - 数组名不是首元素的地址-数组名表示整个数组 - &数组名 取出的是整个数组的地址
	//2.sizeof(arr) - sizeof(数组名) - 数组名表示的是整个数组 - sizeof(数组名)计算的是整个数组的大小
	return 0;
}
00F5F728
00F5F72C
00F5F728
00F5F72C
00F5F728
00F5F750
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {
	int arr[10] = { 0 };
	int* p = arr;
	int i = 0;
	for (i = 0; i < 10; i++) {
		printf("%p ==== %p\n", p + i, &arr[i]);
	}

	printf("---------------------\n");

	int j = 0;
	for (j = 0; j < 10; j++) {
		*(p + j) = j;
	}
	for (j = 0; j < 10; j++) {
		printf("%d ", arr[j]);
	}
	printf("\n---------------------\n");
	for (j = 0; j < 10; j++) {
		printf("%d ", *(p + j));
	}
	return 0;
}
00BBF828 ==== 00BBF828
00BBF82C ==== 00BBF82C
00BBF830 ==== 00BBF830
00BBF834 ==== 00BBF834
00BBF838 ==== 00BBF838
00BBF83C ==== 00BBF83C
00BBF840 ==== 00BBF840
00BBF844 ==== 00BBF844
00BBF848 ==== 00BBF848
00BBF84C ==== 00BBF84C
---------------------
0 1 2 3 4 5 6 7 8 9
---------------------
0 1 2 3 4 5 6 7 8 9
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {
	int a = 10;
	int* pa = &a;
	int** ppa = &pa;//ppa就是二级指针
	**ppa = 20;
	printf("%d\n", **ppa);//20
	printf("%d\n", a);//20
	return 0;
}
20
20
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main() {
	//指针数组 - 数组 - 存放指针的数组
	//数组指针 - 指针
	int a = 10;
	int b = 20;
	int c = 30;
	int* arr[3] = { &a,&b,&c };//指针数组
	int i = 0;
	for (i = 0; i < 3; i++) {
		printf("%d ", *(arr[i]));
	}

	return 0;
}
10 20 30
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值