指针-字符指针

Part1:

数组函参 字符指针 基本用法 常量字符串

我们把要把数组传入函数时,其实传入的是一个地址,对地址内的内容进行修改,对其进行sizeof的话得到的不是数组所占空间,而是指针所占的空间。

#include<stdio.h>

void mylen(int arr[]) {
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d", sz);
}
int main(void) {
	int arr[10] = { 0 };
	mylen(arr);

	return 0;
}

//其结果为1/2

字符指针:我们一般是先定义一个字符a,再定义一个字符指针变量指向a。

char test='a';
char* p=&test;

或者定义一个字符数组,再定义一个指针变量指向它。

char arr[]="abcdef";
char* p=arr;

如果我们直接定义一个指针变量,再将一个字符或字符串赋给指针变量,其实赋的是第一个字符的地址。这样的字符串被称为常量字符串。

char* p="abcdef";

为什么称之为常量字符串呢?按照我们之前的理解,我们有一个指向首字符的指针是不是可以对其进行修改呢?

#include<stdio.h>

int main(void) {
	char* p = "abcdef";
	*p = 'W';
	printf("%s", p);
}

这里运行是程序是会崩溃的。但是编译器并不会报错,为了解决这个问题,我们再定义时可以加上const

const char* p="abcdef";

Part2:

常见错误 比较字符数组 常量空间

我们在做题目的时候时常遇见比较两个数组的判断条件,这个时候如果直接比较数组名,那其实是在比较地址。

    char arr[] = "abcdef";
	char arr1[] = "abcdef";
	if(arr==arr1)//地址并不相同

常量字符串,如果两个常量字符串相同,那么系统是不会开辟两块空间去存放的,这个时候如果用两个指针指向它,其存放的地址是相同的。

	char* p = "abcdef";
	char* q = "abcdef";
	if(p==q)//由于常量相同,p与q的值相同

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值