字符串 指针二维数组

#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
void main1()
{
   char str[50];
   char str1[20];
   char str2[20];
   gets(str1);//获取字符串初始化
   scanf("%s",str2);//获取字符串初始化
   printf("%s,%s",str1,str2);
   sprintf(str,"%s %s",str1,str2);//
   system(str);

}
int execmd(char *in,char* out)
{
	FILE *pipe=_popen(in,"r");//打开管道 读取
	if(!pipe)//管道创建为空,返回0
	{
	  return 0;
	}
	while(!(feof(pipe)))//判定文件是否结束
	{
		char buffer[128];
		if(fgets(buffer,128,pipe))//获取每一行的数据
		{
			strcat(out,buffer);//连接字符串
		}
	}
	_pclose(pipe);//关闭管道
	return 1;
}
//获取字符串的输出
void main23()
{
	char CMDin[50]={0};//输入的指令
	char CMDout[4096]={0};//输出的语句
	scanf("%s",CMDin);//获取结果
	execmd(CMDin,CMDout);//获取结果
	printf("%s",CMDout);//打印结果
	//printf("%s",CMDin);
	//system(CMDin);
	//system("pause");
}
int  mystrlen(char *p)
{
  int num=0;
  while(*p!='\0')
  {
     num++;
	 p++;
  }
  return num;
}
void main()
{
   char str[50];
   int leng;
   scanf("%s",str);
     leng=mystrlen(str);
	 printf("==%d\n",leng);
	 
 
   //system(str);
   system("pause");
}


#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
void main1()
{
  char str[50]="notepad";
  printf("%x\n",str);
  printf("\n%c,%d",'\0','\0');//空字符 ,0
  printf("\n%c,%d",0,0);//编号为0的字符,0,内存的整数
  printf("\n%c,%d",'0','0');//字符0,字符0的编号
 // system(str);
  system("pause");
}
void main2()
{
	//字符串必须要有一个\n
	//char str[4]={'c','a','l','c'};//默认没有初始化的字符填充0
	char str[5]="calc";
	printf("%d\n",sizeof("calc"));
	printf("%s",str);
	system(str);
	system("pause");
}
void main4()
{
	//char str[5]={'c','a','l','c'};

	char *p="tasklist";//将常量字符串的首地址赋值给p
	printf("%d,%d",sizeof(p),sizeof("tasklist"));
	system(p);//本质上是字符串的首地址
	system("pause");
}
void main5()
{
   char *p="tasklist";
      printf("\n%c,%x",*p,p);
   while(*p)//不为0的时候执行 *p==0 跳出循环
   {
	   printf("\n%c,%x",*p,p);
     p++;
   }
   system("pause");
}
//字符串数组
void main6()
{
	char str[10]={"notepad"};//大括号可以省略
    system(str);
}
void main7()
{
	//字符串数组
	char str[10][10]={
		{"notepad"},
		{"calc"},
		{"tasklist"},
		{"ipconfig"}
	};
	char(*p)[10]=str;//指向二维数组的指针
	int i;
	for(i=0;i<4;i++)
	{
		system(p[i]);//字符串元素的首地址
	}
	system("pause");
}
//字符串修改字符
void main8()
{
   char str[10]="tasklist";
   char*p=str;//
   p=p+4;
   *p='l';
   system(str);
   system("pause");
}
void main9()
{
   char str[10]="taskoist";
   char*p=str;//
   p=p+4;
   *p='l';
   system(str);
   system("pause");
}
void main10()
{
	 char *p="taskoist";//taskoist 常量不可以修改
	 char *ps=p;
	 ps+=4;
	// *ps='l';
	 system(ps);
}
//字符指针变量与字符数组
//cha *cp ; 与  char str[20]
//str 是地址常量,cp 是地址变量
//cp 接受键入字符串时,必须先开票存储空间
void mai11n()
{  
	char *p=malloc(sizeof(char)*20);

  scanf("%s",p);
  system(p);
}
void main12313()
{
  char str[20]="tasklist";
  char *p=str;
  int i=0;
  printf("%s",str);//str 数组首地址,遇到\0 就自动结束
  for(p=str;p<str+20;p++)
  {
	  printf("%c",str);
  }
 
  for(i=0;i<20;i++)
  {
	  printf("%c",str[i]);
  }
}

void mainrwe()
{
	//c 语言把所有的设备当作文件处理的。
	printf("printf-helloworld\n");
	fprintf(stdout,"fprintf-helloworld");
	char str[30];
	scanf("%s",str);
	fscanf(stdin,"%s",str);
	system(str);
	getchar();
}

#include <stdio.h>
#include <stdlib.h>
void mainmn()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i=0;
	int j=0;
	int *p=&a[0][0];
	int data=1200;
	printf("%x",a);
	
	for(;p<&a[0][0]+12;p++)
	{
	   *p=data;
	   data-=100;
	}

	for(i=0;i<3;i++)
	{
		
	  for(j=0;j<4;j++)
	  {
		  printf("\na[%d][%d]=%d",i,j,a[i][j]);
	  }
	}
}
void mainklj()
{
  int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
  //int *p=a;
  //int **p=a;
  int(*p)[4]=a;//每个元素都是一个一维数组  指向有四个元素的一维数组
  int i;
  int j;

  printf("%d,%d\n",sizeof(p),sizeof(*p));//p  4, 16 *p=16 说明是指向4个数组的指针
  printf("%d,%d,%d\n",p,p+1,p+2);//相隔16 行指针,每移动一个一行的大小
  printf("%d,%d,%d\n",p[0],p[1],p[2]);//跟上面相等
  printf("%d","%d",sizeof(p),sizeof(p[0]));//4,16 p[0] 和*p 是等价的。
  for(i=0;i<3;i++)
  {
    for(j=0;j<4;j++)
	{
		//p 和a 正真等价  2维数组做游戏经常用到
		printf("\n..%d",p[i][j]);
		printf("\n..%d",a[i][j]);
		printf("\n..%d",*(*(a+i)+j));
		printf("\n..%d",*(*(p+i)+j));
	}
  }
  getchar();
}
void main243243242()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i;
    int j;
	int(*p)[4]=a;//用一个指向有四个元素的一维数组的指针指向a
		printf("%d",sizeof(a));//48
	printf("\n...%d",sizeof(p));//p行指针
	printf("\n...%d",sizeof(*p));//*p 取出行指针内容,可以得到一行多大
	printf("\n...%d",sizeof(*p+1));//列指针只有4个元素 列指针每次移动一个+4 个字节
	//*p+0 //在某一行,取出第0个元素的地址 int 类型
	for(i=0;i<3;i++)
  {
	  
    for(j=0;j<4;j++)
	{

		//p 和a 正真等价  2维数组做游戏经常用到
		printf("\n..%d,%x",p[i][j],&p[i][j]);
		printf("\n...%d,%x",*(p[i]+j),p[i]+j);
		printf("\n...%d,%x",*(*(p+i)+j),*(p+i)+j);
		/*printf("\n..%d",a[i][j]);
		printf("\n..%d",*(*(a+i)+j));
		printf("\n..%d",*(*(p+i)+j));*/
	}
  }
	getchar();
}
void main()
{
		int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
		int i;
        int j;
	    int(*p)[4]=a;//用一个指向有四个元素的一维数组的指针指向a
		for(i=0;i<3;i++)
  {
	  
    for(j=0;j<4;j++)
	{

		//p 和a 正真等价  2维数组做游戏经常用到
		printf("\n..%d,%x",p[i][j],&p[i][j]);
		printf("\n...%d,%x",*(p[i]+j),p[i]+j);
		printf("\n...%d,%x",*(*(p+i)+j),*(p+i)+j);
		/*printf("\n..%d",a[i][j]);
		printf("\n..%d",*(*(a+i)+j));
		printf("\n..%d",*(*(p+i)+j));*/
	}
  }
		//a 是一个常乐指针,数组名的地址就是地址
		printf("\n%x,%x",a,&a);
		//数组名,数组名实际上就是地址,取数组的地址
		printf("\n%x,%x",main,&main);//函数名实际上就是地址 取函数地址,函数名会解析为取函数地址
		printf("\n%x,%x",p,&p);//p 是一个变量指针
	getchar();

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值