一、指针不等于地址

指针不仅有地址,还有类型,是一个存储了地址的变量,可以改变指向;而地址是一个常量

#include<stdio.h>
#include<stdlib.h> void main() {
int num=;
int data=;
printf("num=%d,&num=%p\ndata=%d,&data=%p\n",num,&num,data,&data); //用键盘初始化一个指针:初始化一个数据需要数据的地址,初始化一个指针需要指针的地址
int *p;
scanf("%p",&p);//输入num的地址后,p=&num
*p=; int *pp;
int pdata;
scanf("%p",&pdata);//输入data的地址后,pdata=&data
pp=(int *)pdata;//把整数转换成指针
*pp=; printf("num=%d,&num=%p\ndata=%d,&data=%p\n",num,&num,data,&data); system("pause");
}

二、指针和字符串数组的区别

#include<stdio.h>
#include<stdlib.h> void main() {
char *p="abcdefg";//p是一个指针,存储了常量字符串的地址
char str[]="abcdefg";//str是数组,接受了常量字符串的赋值
printf("%s,%s\n",p,str);
printf("%d,%d\n",sizeof(p),sizeof(str));
//*p='A';//常量不可修改
str[]='A';
printf("%s,%s\n",p,str);//数组是变量,可以修改 system("pause");
}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//c语言头文件,无string类 void main0() {
char str[]="hello,yincheng ok";
char ch='o';
char *p=str;
while (*p!='\0')
{
if(*p==ch){
char *p1=p;
char *p2=p+;
} }
printf("%s\n",p); system("pause");
}

三、删除字符及字符串

1.删除字符

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//c语言头文件,无string类 void main() {
char str[]="hello,yincheng ok";
char ch='o';
char *p=str;
while (*p!='\0')
{
if(*p==ch){
char *p1=p;
char *p2=p+;
while (*p2!='\0')
{
*p1=*p2;//字符串向前移动
p1++;
p2++;
}
*p1='\0';//填充结束符
}
p++;
}
printf("%s\n",str); system("pause");
}

2.删除字符串

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>//c语言头文件,无string类 void main() {
char allstr[]="123456789,hello yincheng, hello c,hello cpp,hello itcast";
char str[]="hello";
char *p;
while ((p=strstr(allstr,str))!=NULL)//能找到字符串就继续,否则退出循环
{
int length=strlen(str);//获取要删除字符串的长度
char *p1=p;//获取当前位置
char *p2=p+length;//获取要删除字符串的后继位置
while (*p2!='\0')
{
*p1=*p2;//根据指针进行字符串拷贝
p1++;
p2++;
}
*p1='\0';
//一轮循环消灭一个str:代码到此返回第9行,对strstr(allstr,str)进行判断
}
printf("%s\n",allstr); system("pause");
}

四、检索进程里是否有QQ

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void execmd(char *cmd,char *result){
char buffer[]={};//定义一个字符串缓冲区
FILE *pipe=_popen(cmd,"r");//创建一个管道,执行指令,把管道当做文件来处理。r就是把文件按照读的方式来操作
if(pipe==NULL){
printf("运行失败");
return;
}else{
while (!feof(pipe))//判断是否到了文件末尾,没到就继续。feof到了末尾返回非0,否则返回0
{
if (fgets(buffer,,pipe))//读取文件到缓冲区
strcat(result,buffer);//连接字符串,将结果保存到result
}
_pclose(pipe);//关闭管道
return;
}
} void main() {
char output[]={};//定义一个字符串,接收输出。必须足够大,否则会溢出
execmd("tasklist",output);//执行指令,将结果保存到output
printf("%s\n",output);
if(strstr(output,"QQ.exe")==NULL)
printf("QQ未运行\n");
else
printf("QQ已运行\n");
system("pause");
}

五、实现memcpy

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void *my_memcpy(void *dst,const void *src,unsigned int Size){
char *tmp=(char *)dst;
const char *s=(char *)src;
while(Size--)
*tmp++=*s++;//进行拷贝,++让指针向前移动
return dst;
} void main() {
char strA[]="*****************";
char strB[]="";
//memcpy(strA,strB,9);
my_memcpy(strA,strB,);
printf("%s\n",strA);
system("pause");
}

[c/c++] programming之路(29)、阶段答疑的更多相关文章

  1. #Java学习之路——基础阶段二(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  2. #Java学习之路——基础阶段二(第十篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  3. #Java学习之路——基础阶段二(第九篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  5. #Java学习之路——基础阶段二(第七篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. #Java学习之路——基础阶段二(第六篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. #Java学习之路——基础阶段二(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. #Java学习之路——基础阶段二(第四篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. #Java学习之路——基础阶段二(第三篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

随机推荐

  1. ubuntu下安装PyCharm的两种方式

    PyCharm一个是Python集成开发环境,它既提供收费的专业版,也提供免费的社区版本.PyCharm带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Proj ...

  2. TCP三次握手那些事

    临近5月,春招和实习招聘逐渐进入尾声.本文主要讨论面试中经常提问的TCP连接的机制,附带一些扩展知识. 参加面试的时候,过半的面试官都会问TCP相关问题,而最常见的问题就是:讲一下TCP三次握手(四次 ...

  3. Autofac之类型注册

    本次主要学习一下Autofac中实现类型注册的几种方式,这里并不打算一开始就从基于接口开发的服务关联切入,而是先从一个简单的类型注册来学起,虽然实际开发中可能不会这么做,但是个人感觉从这里学起理解能能 ...

  4. python报错记录

    1.AttributeError: 'NoneType' object has no attribute 'group' import re s=r'<title>kobe<\tit ...

  5. 杂记:解决Android扫描BLE设备名称不刷新问题

    背景 个人开发过一种BLE设备有这样一种需求:当设备处于状态A时,广播设备名称A:处于状态B时,广播设备名称B. 问题 我们发现,当Android在进行Ble扫描的时候,扫描回调函数onScanRes ...

  6. git删除和提交

    //删除git分支git branch -D BranchNamegit branch -r -D origin/BranchNamegit push origin -d BranchName//提交 ...

  7. Linux进程PRI与NI值

    1.PRI -> 进程的优先级,大部分系统(Linux.UCOSII)都是数字越低优先级越高,进程就优先运行 , Linux中的PRI(new) = PRI(old) + nice ,其中 , ...

  8. js优化 前端小白适用

    注意啦,前端初学者适合看的js优化,当你看我的优化认为太low,那么恭喜,你已经脱离初学者了. 首先这边我觉得分享的还是以js为主,前端性能优化,我认为最重要的还是js,因为js是一门解释型的语言,相 ...

  9. 551.学生出勤记录I

    /* * @lc app=leetcode.cn id=551 lang=java * * [551] 学生出勤记录 I * * https://leetcode-cn.com/problems/st ...

  10. 利用RALL机制来事项String类的赋值操作

    class String{ public: char *str; String(const char *ptr=NULL){ if(ptr==NULL) { str=NULL; }else{ str= ...