指针(1)
约 383 字大约 1 分钟
2024-07-07
64.指针数组和多重指针
//对一个字符型数组指针数组排序
#include <stdio.h>
#include <string.h>
void show(char *a[4],int len)
{
for(int i =0;i<len;++i)
puts(a[i]);
}
void sort(char **a,int len)
{
for(int i=0;i<len-1;++i)
for(int j =0; j<len-i-1;++j)
{
if(strcmp(a[j],a[j+1])>0)
{
char *p=a[j];
a[j]=a[j+1];
a[j+1] =p;
}
}
}
int main(void)
{
char *a[4]={"haha","lala","hello","hehe"};
sort(a,4);
show(a,4);
return 0;
}
65.指针数组做main函数形参
- 函数无参时,调用main函数时不必给出实参
- main函数可以带参,例如int main(int argc,char*argv[])
//该程序功能 输出argv中元素的内容
#include <stdio.h>
int main(int argc,char *argv[])
{
while (argc-- >0)
{
printf("%s\n",*(argv++));
}
return 0;
}
argc和argv是main函数的形参,它们是程序的"命令行参数" argc表示参数个数,argv表示参数向量,它是一个指向字符指针的指针变量,其每一个元素指向一个字符串
66.void指针
#include <stdio.h>
int main(void)
{
int a = 3,*p1;
p1 = &a;
char ch = '0',*p2;
p2 = &ch;
void *p3 = (void *)p1; //也可以写成void *p3 =p1;因为其他指针和void*类型的指针发生相互赋值时。会进行隐式数据类型转换
// p2 = p1;
// printf("%d\n",*p3); error因为p3不是void *类型,不指向确定类型的指针,所以无法通过*p3来访问变量a
p3=p2;
printf("%d\n",*(char*)p3);
return 0;
}