c语言指针输入
A. c语言指针输入输出
不允许直接将字符串赋予指针!
比如char
*p;
sancf("%s",p);错误
正确
char
*p="dadasd"在声明时就赋值
char
*p;
p="sdadsa"
声明后赋值
char
a[10],*p=a;
scanf("%s",p);
正确,专这是最常用方属法
B. c语言指针输入
看来楼主没有理解指针必须要初始化这一定律啊。
char *str;
str="l love china";
指针 str 是指向字符的,也就是指向了一个地址
赋值为str="l love china" 这里指针str的值也就是字符串 "l love china" 的首地址
而输出的时候puts(str); puts中的参数当然也是首地址了,如果puts的参数是字符数组,那实际上也是地址,因为数组的名字就是数组第一个元素的地址。当地址是字符串的地址时,指针会自动下移一个位置。直到遇到'\0'为止
而下面这个
char *str;
scanf("%s",str);
指针没有初始化,所以是不对滴。
其实在C语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
C. c语言如何输出指针所指向的值
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
D. C语言字符指针怎么输入谢谢
可以参考下面的代码:
#include <stdio.h>
#include <string.h> // 要用尖括号
intmain()
{
char*str;
str = (char*)malloc(sizeof(char) * 20); // 申请20个char长度的空间
scanf("%s", str); //输入
printf("%s ", str); // 输出
free(str); // 释放空间
return0;
}
(4)c语言指针输入扩展阅读:
字符指针注意事项:
在字符指针中p是指针变量指向字符串首元素(前提对p指针没有进行指针操作),p中存放首元素的地址(一旦被初始化就,系统就为我们分配好了地址,而且地址也不能改变,因为字符指针是一个只读变量,不能企图对一个初始化好的指针进行内部修改)
而*p是对指针变量p进行解引用操作,也就是指针所指向的内容,而&p是对指针变量取地址,所以也就肯定不会和p的值相等,因为字符指针系统会为其分配内存,p的值是字符串首元素的地址。
E. c语言 指针输入
你定义了一个指针s,却不让他指向什么,scanf("%d",s+i);当人会有问题
#include
int
main()
{
int
a,b,i;
int
*s;
int
p[8];
s
=
p;
for(i=0;i<8;i++)
scanf("%d",s+i);
for(i=0,a=1;i<7;i++)
{
a=i+1;
for(;a<8;a++)
if
(*(s+i)<*(s+a))
{b=*(s+i);*(s+i)=*(s+a);*(s+a)=b;}
}
for(i=0;i<8;i++)
printf("%d",*(s+i));
return
0;
}
指针一定要指向一个地址
F. C语言 指针与scanf
首先你只要明白scanf语句中要传的是地址就可以,具体的底层实现你不用管。
关于指针专,属你要知道一个指针类型的变量指向的是一个地址,比如定义一个指针,指向你家的地址,不管你家的房子怎么装修,我只要照着我的地址去找还是能找到你这个房子,假如我修改了这个地址指向的变量,也就是我把你家地址上的建筑给改变了,那你家的房子当然就变了。
如果你不好理解的话就记住,‘*’和‘&’这两个符号假如紧挨着就抵消,其中一个符号移动到‘=’的另一边就变成另一个符号。举个例子*(&a)其实就是a,*p = a其实就是p = &a。这个小技巧只适合做选择题什么的,底层实现并不是这样。
然后题中,p是一个指向long类型的指针,a是一个long类型变量。
先看A,*p是一个long类型变量,&a是地址,不能把地址赋给变量,A错。
再看B,malloc分配了一个8字节的空间,然后转换成指向long类型的指针,然后让p指向这块内存,然后p很显然是一个地址,scanf里传的就是地址,所以B对。
再看C,p=&a的结果就是p,是一个地址类型,C对。
最后看D,&a是地址类型,D对。
然后这个题是选不正确的,那答案就是A。
G. C语言函数用指针输入数组元素,对吗
如下提示供参考:
int ddata[20]是 scanfArr函数内部定义的,是局部变量,上面 arr = ddata,导致scanf输入的数组元素会保存到内 局部变量 数组中,并容无意义。
从问题描述,提供以下代码供参考:
#include<stdio.h>
voidscanfArr(int*arr,intn)
{
inti;
printf("请输入5个数(以回车键结束): ");
for(i=0;i<n;i++,arr++)
scanf("%d",arr);
}
voidmain()
{
inti,ddata[5];
scanfArr(ddata,5);
printf("输入的数组如下: ");
for(i=0;i<5;i++)
{
printf("[%d]:%d ",i,ddata[i]);
}
}
运行截图:
H. C语言指针字符输入输出
#include"stdio.h"
#include"stdlib.h"
intmain()
{
char*string=(char*)malloc(sizeof(char)*100);
scanf_s("%s",string,100);
printf("%s ",string);
return0;
}
I. c语言 用指针实现一组数据的数据输入与输出
#include<stdio.h>
main()
{
int a[6],i;
int *p;//p没有定义怎复么能够使用呢制?p为指针
for(i=0;i<6;i++)//for之后怎么是{ },应是();还有没有等于,否则会指针越界
scanf("%d",&a[i]);//此处丢了一个&(求地址)
p=a;
/*
for(i=0;i<=6;i++)此处与下面的语句没有联系,按照你的写法,会输出7次a[0];
*/
for(i=0;i<6;p++,i++)
printf("%3d",*p);//居然丢了一个*,太粗心
printf("\n");
}
修改版已经在上面,你自己好好看一下吧!不懂可以问我!
J. C语言输入字符型指针数组怎么输
*p[10],具有10个字符指针复的数组,先要存制在具体地址,否则是野指针,发生错误
#include "stdio.h"
#include "stdlib.h"
main()
{
char *p[10],*temp;
int i,j,k;
for(i=0;i<10;i++)
{
p[i]=(char*)malloc(sizeof(char)*50);//开辟内存
}
for(i=0;i<10;i++)
{
printf("输入第%d本书的书名\n",i+1);
gets(p[i]);
}
for(i=0;i<10;i++)
{
printf("%s\n",p[i]);
}
}