C指针学习

发布于:2022-10-27 ⋅ 阅读:(316) ⋅ 点赞:(0)

目录

一、指针的理解

二、指针的表示

 1、指针的大小

三、指针的使用

1、变量访问

2、数组的指针

3、通过指针来实现计算字符串长度

 4、多级指针

 5、指针数组


一、指针的理解

指针就相当于一个绝对地址,可以通过指针来直接访问或修改内存里存放的“值”,而不是通过变量名。 w访问或修改变量不是通过这种来找,而是像坐标一样找到,房间名可能会变但坐标不会。 y东经北纬来找。

二、指针的表示

#include <stdio.h>
int main()
{
 int a = 10;//定义一个变量,内存有一块空间来存放a值
 int *p = &a;//int* :是指针变量 &:为取地址符 
             //将a的地址取出存放到指针变量 p里面
printf("%d",*p);//也可以通过指针来打印
*p=11;          //*:解引用 可修改值 
printf("%d",a);
 return 0;
}

 1、指针的大小

在32位电脑中有32根地址线,每根地址线都能表示高电压(1)和低电压(0),那么就有2^32个地址。

由此在32位电脑中存放一个指针要4Byte来进行存储,在64位电脑中要8Byte来存储

三、指针的使用

1、变量访问

指针变量的大小都是相同的,不同位数的电脑除外,

指针的类型决定了,能够访问空间的大小 

int* p:*p能够访问4个字节

char* p:*p能够访问1个字节

double *p:*p能够访问8个字节

2、数组的指针

  • 数组在内存中存放都是连续的一块区域,不同类型的指针变量,每个内存相距也不同。
  • 指针本身的大小在同一平台下都是四个字节的大小,但不同类型的指针,往后跳的范围不同  int后跳4字节 char跳1字节 double跳8个字节。

  • 绝大部分数组名就是首元素的地址,将arr和arr[0]的地址都打印出来就会发现,它们的地址都是一个。arr 和sizeof(arr)这里的数组名为整个数组。 

3、通过指针来实现计算字符串长度

#include <stdio.h>
int strlen(char* str)
{
	char* x = str;
	char* y = str;
	while (*y != '\0')
	{
		y++;
	}
	return y - x;
}
int main()
{
	char arr[] = "wo shi xiyangyang. !!!";
	printf("%d", strlen(arr));
	return 0;
}

 4、多级指针

 5、指针数组

#include <stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = 3;
	int* arr[] = { &a,&b,&c };
	printf("%d ", *arr[0]);
	printf("%d ", *arr[1]);
	printf("%d ", *arr[2]);
	return 0;
}

本文含有隐藏内容,请 开通VIP 后查看