C语言指针基础题(三)
感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿?🐿?🐿? C语言例题
🐣🐓🏀 python
以下是后面例题所涉及到的文章,如果有不会的可以点击了解
C语言深入理解指针(非常详细)(一)
字符函数和字符串函数(上)
字符函数和字符串函数(下)
C语言深入理解指针(非常详细)(四)
例题一
以下关于指针的说法,正确的是( )
A.int *const p与int const *p等价
B.const int *p与int *const p等价
C.const int *p与int const *p等价
D.int *p[10]与int (*p)[10]等价
例题解析
const修饰其实就是让修饰的对象不会被改变,因为有时候我们在一些函数中传入了一些数据,而有些数据我们并不希望对其进行修改,所以这时就需要用到const修饰
A :int *const p与int const *p我们必须要明白const修饰的对象
int *const p的const修饰的是p,int const *p的const修饰的是 *p(其实const修饰的就是const后面部分),p和 *p很明显是不等价的,因为p其实是一个指针变量,p指向的地址是不能被修改的,而 *p则是对p解引用后的结果是不能被修改的,所以这两个是不等价的
B :const int *p中const修饰的是 *p(const int *p等价于int const *p),int *const p的const修饰的是p,所以上不等价的
C :const int *p与int const *p是等价的
D:int *p[10]与int (*p)[10]主要一个是指针数组,一个是数组指针,注意要分清哪个是指针数组,哪个是数组指针(可能学了一段时间就会忘记怎么判断)
答案
**答案 C **
例题二
C语言中哪一种形式声明了一个指向char类型变量的指针p,p的值不可修改,但p指向的变量值可修改?( )
A.const char *p
B.char const p
C.charconst p
D.const char *const p
例题解析
这道题和上一题是一样的
const修饰*p,表示p指向的内容不能修改
const修饰p本身,表示p的指向不能修改,p指向的空间中内容可以修改
第一个const表示p指向的内容不能修改,第二个const表示p不能指向其他变量
答案
答案
例题三
调整奇数偶数顺序
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
例题解析及答案
给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置
循环进行一下操作
如果left和right表示的区间[left, right]有效,进行b,否则结束循环
left从前往后找,找到一个偶数后停止
right从后往前找,找到一个奇数后停止
如果left和right都找到了对应的数据,则交换,继续a
void swap_arr(int arr[], int sz)
{
int left = 0;
int right = sz-1;
int tmp = 0;
while(left<right)
{
while((left<right)&&(arr[left]%2==1))
{
left++;
}
while((left<right)&& (arr[right]%2==0))
{
right--;
}
if(left<right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
例题四
模拟实现库函数strcpy
答案
char * my_strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ );
return( dst );
}
例题五
模拟实现库函数strlen
例题解析及答案
size_t my_strlen (const char * str)
{
const char *eos = str;
while( *eos++ ) ;
return( eos - str - 1 );
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!