针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误

数组传参实际传递的是数组的起始地址,若在函数中改变数组内容,数组本身也会发生变化

#include<stdio.h>
void change_ch(char* str)
{
	str[0] = 'H';
}
int main()
{
	
	char ch[] = "hello";
	change_ch(ch);
	printf("%s\n", ch);
	return 0;
}

数组长度计算

数组总大小/每一个元素的大小=数组元素个数即数组长度
int main()
{
    int arr[]={1,2,3,4,5,6};
    int len = sizeof(arr)/sizeof(arr[0]);//数组总大小/每一个元素的大小=数组元素个数即数组长度
    printf("%d\n",len);
    return 0;
}

2.指针

指针变量加减法操作时,每次加一,增加的长度是其基类型的长度*1

#include<stdio.h>
int main()
{
	int i[] = { 1,2,3,4,5 };
	char ch[] = "hello";
	int* pInt = &i;
	char* pCh = &ch;
	printf("%d\n", *pInt);
	printf("*(pInt+1) == %d\n", *(pInt + 1));

	printf("%c\n", *pCh);
	printf("*(pCh+1) == %c\n", *(pCh + 1));
	return 0;
}

指针的另一种用法

#include<stdio.h>
int main()
{
	int i[] = { 1,2,3,4,5 };
	char ch[] = "hello";
	int* pInt = &i;
	char* pCh = &ch;
	printf("%d\n", pInt[0]);
	printf("%c\n", pCh[0]);
    return 0;
}

这种用法称为“数组指针”(array pointer)或“指针算术”(pointer arithmetic):

  1. pInt[0]:等同于 *(pInt + 0),实际上获取的是 i[0] 的值,即 1
  2. pCh[0]:同样等同于 *(pCh + 0),获取的是 ch[0] 的值,即字符 'h'

这利用了 C 语言中指针和数组的关系,允许通过数组下标语法来访问指针指向的内容。

3.引用(需要.cpp后缀了属于C++的知识,但是在考研数据结构中使用不算难,可以简化多级指针的使用)

引用其实就是起小名,还是同一个人,托管的地址一样(为了简化内存损耗,不是复制,而是直接找到内存进行引用

引用--->针对子函数改变主函数的普通变量问题

【注】引用传参--->直接使用而不是复制,因此改变会改变变量本身

引用--->针对子函数改变主函数一级指针的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值