2条回答 默认 最新
关注 1、这个方法的功能是字符串翻转
2、p和q的值
3、这里涉及的指针概念比较绕
#include <stdio.h> #include <stdlib.h> /*冒泡排序*/ void f(char s[]) { /* 知识点【星号在C语言里的含义】 1)乘法,1*1 2)定义指针变量,char* p,数据类型后面 3)解引用运算符,引用地址指向的值,char *p,变量前面 指针其实是一个整形变 用来存储其它变量的地址 */ char *p = s; // 定义一个指针p,值为abcde,p默认指向字符串的首个字符地址 char *q = s; // 定义一个指针q,值为abcde,p默认指向字符串的首个字符地址 char t; // 定义一个字符 while (*++q); // ++q指针指向下一个地址,*++q,取指针指向下一个地址的值,就是空值 q--; // 上一个指针指向e,abcde // 第一次循环:p<q 》a < e 》True while (p < q) { t = *p; // p=abcde,*p取第一个值a,赋值给t *p = *q; // *q=e,将e值赋值给*p=ebcde *q = t; // t=a,将a赋值给*q,就是将a值赋值到e之前所在的地址,本来是p=ebcde,*q指针指向的是e的地址,a的值存放到e的地址,所有变为了ebcda p++; // 指向第二个值开始,ebcda变成bcda q--; // q--指向倒数第二位置 q由a变成da } } int main() { char charArr[6] = { 'a','b','c','d','e' }; printf("%s\n", charArr); f(charArr); printf("%s\n", charArr); printf("\n"); system("pause"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法
- ¥15 可否在不同线程中调用封装数据库操作的类
- ¥15 微带串馈天线阵列每个阵元宽度计算
- ¥15 keil的map文件中Image component sizes各项意思
- ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
- ¥15 划分vlan后,链路不通了?
- ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据