进阶指针(C语言)

本文详细介绍了指针的概念、类型及其重要性,包括指针指向地址、不同类型指针的区别,如一级指针(如int*)、二级指针(如int**)、char*的独特之处,以及数组指针和函数指针的区分。通过实例演示了如何理解和使用这些概念。
摘要由CSDN通过智能技术生成

1.认识

与初阶有所不同的是,这里会涉及更多的不同类型的指针。那什么是指针,什么是指针类型?

1)指针指地址,指向内存某一字节单元,是内存的编号。指针大小由本机中有多少根地址线决定,一根地址能表示0.1两个状态——即一个比特位。当机器有32根地址线时,就是32个比特位,指针的大小也就是32个比特位——4字节
2)指针类型指指针所指向地址存放的数据的类型是啥,列如int a=0;int *p=&a,p是指针,指向的内容是a,a的类型为int,所以该指针的类型为int*.
3)指针类型的重要性:只有知道了指针的类型我们才能知道当我们在使用这个指针的时候,他所能够访问内存的权限有多大。列如他是一个int*型的指针,我们在对他解引用的时候,他就能访问四个字节的内容

我们来看这样一段代码,觉得输出的结果是啥

#include<stdio.h>

int main()
{
	int arr[10] = { 0 };
	printf("%p ",arr);
	printf("%p ",& arr);
	printf("%p ", &arr[0]);
	printf("%p ", arr+1);
	printf("%p ", &arr+1);
	printf("%p ", &arr[0]+1);






	return 0;
}

欢迎在下方留言哦!!!!

2.指针类型

上面认识知道了指针类型是啥以及它的重要性,现在就来了解到底有多指针类型,它们如何使用

1)一级指针:主要指它所指向的内容为基本的数据内型列如int,char,float等,用int*,char*,float*来表示
2)二级指针:指它所指向的内容为指针,也就是这个指针所指向的内存当中存放的内容为指针,用int**来表示
3)char*:为啥要单独拎出来呢主要是因为他与其他一级不同的是,它可以char*p="dbfhsg",直接创建指针的时候后接它所指向的内容,P存放的也是该字符串的首地址
#include <stdio.h>
int main()
{
    char str1[] = "hello bit.";
    char str2[] = "hello bit.";
    char *str3 = "hello bit.";
    char *str4 = "hello bit.";
    if(str1 ==str2)
 printf("str1 and str2 are same\n");
    else
 printf("str1 and str2 are not same\n");
       
    if(str3 ==str4)
 printf("str3 and str4 are same\n");
    else
 printf("str3 and str4 are not same\n");
       
    return 0;
}

看看这道题你会做吗??

后面的指针类型就开始比较复杂,会初学者来说会见的比较少,但是我们只要把握他的命名方式就能很快地知道它是什么指针。列如数组指针,指针前面是数组,那么它所指向的内容存放的就是数组,int*p,当我们看到有*在类型后面就能知道P的类型为指针,*前面的类型就是它所指向的内存中存放的数据的类型。把握这些,我们继续来看

4)数组指针:int(*p)[ ],区别于int*p[ ]
5)函数指针:void (*p)()区别于void * p ()

上面两种区分我会专门在后面的讲解,而且会有很多笔试题做哦!!!

记得关注

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值