c语言输入指针字符串
⑴ c语言指针输入
#include<stdio.h>
int main()
{
int a,b,c,s[3],t;
int *x,*y,*z;//定义指针变量
x=&a;//将a的地址赋给指针x,下同
y=&b;
z=&c;
scanf("%d%d%d",x,y,z);
s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推
s[1]=*y;
s[2]=*z;
for(int i=0;i<3;i++)//冒泡排序
for(int j=0;j<3-i-1;j++)
if(s[j]<s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
for(int i=0;i<3;i++)
printf("%d ",s[i]);
return 0;
}
⑵ 关于C语言的字符串指针的问题
如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。无论什么类型的指针,只要是“常指针”就有三种情况不可改变:
指针是常量——这个指针只能指向申明时指向的目标,不能指向别处。
指向的内容是常量——不能通过这个指针改变指向的内容,但指针可以指向别处,也可以通过其他方法改变该指针指向的内容。
指针和指向的内容都是常量——这时指针不能再指向别处,它指向的内容也不可通过这个指针修改(用其他方法修改内容仍然是可以的)。
数组名是常量指针,所以指针不能再指向别处(即改变指向)。
这个问题中,p是普通指针,所以可以改变指向;p指向的内容是由malloc申请的自由空间,所以它们的内容肯定是能够改变的,否则申请这个空间就没有多少意义了。
⑶ C语言 用指针方法 输入3个字符串 按由小到大顺序输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
void swap(char** p, char** q);
char s1[100], s2[100], s3[100];
char *p1, *p2, *p3;
printf("please inter three strings: ");
p1 = fgets(s1, 100, stdin);
p2 = fgets(s2, 100, stdin);
p3 = fgets(s3, 100, stdin);
if (strcmp(p1, p2) > 0)
swap(&p1, &p2);
if (strcmp(p1, p3) > 0)
swap(&p1, &p3);
if (strcmp(p2, p3) > 0)
swap(&p2, &p3);
printf("The old order is: %s %s %s ", s1, s2, s3);
printf("开始输出新的order ");
printf("The new order is: %s %s %s ", p1, p2, p3);
return 0;
}
void swap(char** p, char** q)
{
char* s;
s = *p;
*p = *q;
*q = s;
}