C语言 指针(3)

  1. 字符指针变量
  2. 数组指针变量
  3. ⼆维数组传参的本质
  4. 函数指针变量
  5. 函数指针数组
  6. 转移表

1.字符指针变量
在指针类型中我们知道有一种指针类型为字符指针char*;

#include<stdio.h>
int main()
{
	char ch = 'a';
	char* pc = &ch;//pc就是字符指针变量
	//字符指针变量是用来存放地址的
	const char* p = "abcdefghi";//不是将abcdefghi\o字符串存放到p中,而是将首字符a的地址存储在p中
	//"abcdefghi"是一个常量字符串,是不能被修改的
	//[abcdefghi\0]
	printf("%s", p);
	return 0;
}

在这里插入图片描述
还有一种使用方式

#include<stdio.h>
int main()
{
	const char* pstr = "hello bit.";//这⾥是把⼀个字符串放到pstr指针变量⾥了吗?
	printf("%s\n", pstr);
	return 0;
}

在这里插入图片描述
这里特别容易让同学以为是把字符串hello bit 放到了字符指针pstr里了,但是本质是把字符串hello bit. 首字符的地址放到了pstr 中。

下面我们看一个笔试题

#include <stdio.h>
int main()
{
	char str1[] = "hello bit.";
	char str2[] = "hello bit.";
	const char* str3 = "hello bit.";
	const 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;
}

在这里插入图片描述
为什么是这个结果呢?
我们来分析一下
str1 str2 存放的是首元素的地址,虽然两个里面内容不同,str1里面存放的内容和str2存放的内容所在的位置是不同的,所以str1!=str2
str3 str4 存放的是常量字符串,是不能被修改的,既然不能被修改,一样的内容,有必要存放两份吗?没有必要

  1. 数组指针变量
    2.1 数组指针变量是什么?
    之前我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。
    数组指针变量是指针变量?还是数组?
    答案是:指针变量。
    字符指针 -指向字符的指针,存放的是字符的地址。char ch=‘w’; char *pc=& ch;
    整型指针-指向整型的指针,存放的是整型的地址 int n=100; int *p=&n;
    数组指针-指向数组的指针,存放的是数组的地址 int arr[10]; int ( *p)[10]=&arr;

指针(3)先到此结束,明天修改

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值