求大神,用指针的话怎么改
#include"stdio.h"voidmain(){char*p;inti,j=0;gets(p);for(i=0;*(p+i)!='\0';i++)j++;prin...
#include"stdio.h"
void main()
{
char *p;
int i,j=0;
gets(p);
for(i=0;*(p+i)!='\0';i++)
j++;
printf("%d\n",j);
} 展开
void main()
{
char *p;
int i,j=0;
gets(p);
for(i=0;*(p+i)!='\0';i++)
j++;
printf("%d\n",j);
} 展开
5个回答
展开全部
#include"stdio.h"
void main()
{
char p[4096];
char *ptr = &p[0];
int j=0;
gets(p);
while(*ptr!='\0')
{
j++;
ptr++;
}
printf("%d\n",j);
}
楼主你的char *p没有初始化,应该运行不了的。
追问
还是错的,题目是统计一个字符串中的字母,数字,空格,和其他字符的字数
追答
#include"stdio.h"
void main()
{
char chp[4096];
char *p = &chp[0];
int i,j=0;
gets(chp);
for(i=0;*(p+i)!='\0';i++)
j++;
printf("%d\n",j);
}
这是你原来的写法,这样也行
展开全部
char *p;
改成 char p[100];
100是缓冲区大小,根据输入内容多少自己定。
改成 char p[100];
100是缓冲区大小,根据输入内容多少自己定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针必须指向一个有效的地址空间,你只给了一个指针,但是没有给他指向有效空间——
#include"stdio.h"
void main()
{
char *p;
char arr[100]; //注意你输入的时候不能超过100个字符
p=arr;
int i,j=0;
gets(p);
for(i=0;*(p+i)!='\0';i++)
j++;
printf("%d\n",j);
}
#include"stdio.h"
void main()
{
char *p;
char arr[100]; //注意你输入的时候不能超过100个字符
p=arr;
int i,j=0;
gets(p);
for(i=0;*(p+i)!='\0';i++)
j++;
printf("%d\n",j);
}
追问
字符串不是可以用指针代替吗?不能直接用?题目是统计一个字符串中的字母,数字,空格,和其他字符的字数,你给我的我编过,我是不懂为什么我不能那么用指针;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include"stdio.h"
#include"stdlib.h"
void main(){
char *p;
int i, j = 0;
p = (char*)malloc(128);
gets(p);
for(i = 0; *(p + i) != '\0'; i++)
j++;
free(p);
printf("%d\n", j);
}
要用 malloc 和 free 手动申请和释放内存
#include"stdlib.h"
void main(){
char *p;
int i, j = 0;
p = (char*)malloc(128);
gets(p);
for(i = 0; *(p + i) != '\0'; i++)
j++;
free(p);
printf("%d\n", j);
}
要用 malloc 和 free 手动申请和释放内存
追问
”要用 malloc 和 free 手动申请和释放内存 “ 是什么意思 ,我还没学你能帮解释一下吗?p = (char*)malloc(128);和 free(p);
我没看懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针在使用之前一定要初始化,如果在没有初始化前,它的值是未知,有可能指向系统当中某些敏感已存在数据的内存块,你在往里面存入新数据的时候,会覆盖掉原来的,数据,所以你得先找出一块可用的内存,并把首地址数值赋值给这个指针变量,具体多少大小,得看你要存多少数据了。
你也可以分配你认识适合大小的内存。
要用 malloc 和 free 手动申请和释放内存 “ ;和 free(p);
(char*)malloc(128) 在内存当中找到128字节大小的内存,char * 主要是声明可以指向的指针类型,在取数的时候,首先找到分配好的内存的首地址,然后根据指向的类型,例如 char * 就是每次取出从现在开始往后数一个字节的数据(8位),这是一个单位,直到取出所有的数据。
free 就是把刚你指向的那个内存,数据清空(还原为初始值),并告诉系统,这个块内存可以被重新申请了。
你也可以分配你认识适合大小的内存。
要用 malloc 和 free 手动申请和释放内存 “ ;和 free(p);
(char*)malloc(128) 在内存当中找到128字节大小的内存,char * 主要是声明可以指向的指针类型,在取数的时候,首先找到分配好的内存的首地址,然后根据指向的类型,例如 char * 就是每次取出从现在开始往后数一个字节的数据(8位),这是一个单位,直到取出所有的数据。
free 就是把刚你指向的那个内存,数据清空(还原为初始值),并告诉系统,这个块内存可以被重新申请了。
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询