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;
}