@C语言大牛 指针代码跪求修改!!!在线等!!
作者&投稿:水帜 (若有异议请与网页底部的电邮联系)
pmax=pmin1=pmin2=pmin3=pmin4=a[0]; //这里少了个 pmin4 没有给 pmin4赋值,后面就开始引用
另外,结果可能并不正确,你在最后换位置时,如果记录的位置就在4个角上,前面的交换可能已经把此角的值换走了,后面交换的已经不是原来的值了。
假设 pmin4的位置在 a[0][0],前面 pmin1已经换走了原来的值,后面pmin4再引用已经不是原来的值了
char* name[4] 这个只是创建了指针数组 并没有为每个指针分配空间
修改有两个路线
一个是动态分配
for(i=0;i<=3;i++)
{
name[i] = malloc(100);
scanf("%s",&name[i]);
} //数组里存放了4个指针了
记得要用完释放
另一个是直接改成静态的 不过对应change中的实现就得改变了
推荐用第一个
# include<stdio.h>
int main()
{
char s[100],*ps=&s[0],*p; /*ps应该定义成指针*/
int i,num=0,lenth,a[100],*pa=&a[0]; /*pa应该定义成指针*/
scanf("%s",s);
lenth=strlen(s);
for(p=ps; p<ps+lenth; p++)
{ /*循环体要用{}括起来*/
if('0'<=*p&&*p<='9') /*判断是否为数字,0和9也包含在内*/
{ /*if执行体要用{}扩起来*/
*pa=(*p++)-48; /*这里第一次赋值不要加原来的随机值*/
while('0'<=*p&&*p<='9') /*问题同上*/
*pa=10*(*pa)+((*p++)-48);
num++;
pa++;
p--; /*因为for循环会执行p++,所以这里p的位置要回退一个*/
}
}
printf("%d
",num);
pa = a; /*pa应该指向数组首地址*/
for(i=0; i<num; i++)
printf("%d,",*pa++); /*pa应该往后自增移动*/
getch();
}
武安清开: #include const int MAXSIZE = 5; const int MAXLEN = 81; int main() { char s[MAXSIZE][MAXLEN]; char *zfc[MAXSIZE]; // 只申请了存放指针的空间,并没有申请字符数组空间 int i; void sort(char *zfc[MAXSIZE]); for(i = 0;igets(s[i]);//输入字符串 ...
白银市17878194509: 跪求高手 C语言中的指针原理及代码?
武安清开: 指针其实就是指向变量地址的变量(地址). 代码: 时钟的代码 #include <time.h> #include <stdio.h> int main() { time_t stime; printf("%ld\n",time( &stime ) ); }//
白银市17878194509: C语言指针的小问题, 出现段错误,求分析,感激不尽,代码如下 - ?
武安清开: static char *i,*ant; //定义字符指针,*i,*ant指针,指向常量,也就是里面的内容不容许再次修改了i="asdf"; //赋值,...
白银市17878194509: c语言指针···跪求高手来?
武安清开: C语言中一般不直接赋值给指针变量,因为指针里面存的是地址~而一般不能直接知道地址.不过你的这题不是给指针变量赋值,而是给指针变量指向的整型赋值,dight=letter=other=0; 这样才是直接给指针变量赋值,不过这样也是可以的,因为空指针NULL的底层就是0,不过一般不这么写,你这个题是*digit=*letter=*other=0; 这是给 digit、letter、other指向的整型赋值为0的~ int *digit 说明digit本身是个指针变量,不过 *digit间访操作的是digit指向的整型的
白银市17878194509: C语言求积分的指针调用函数代码求修改 - ?
武安清开: float integral(float a,float b,(*p)(float x)) 应该改为 float integral(float a,float b,float (*p)(float x))
白银市17878194509: c语言将程序改用指针?
武安清开: //不知道是不是要的这种 #include<stdio.h> void delchar(char *str1); void main() { char str1[80]; printf("Please input a string:\n"); gets(str1); delchar(str1); } void delchar(char *str1) {char str2[80]={'\0'}; int k=0,i=0;for(;(*str1)!='\0';i++) { if((*str1)>'9'||(*...
白银市17878194509: 【C语言】关于指针. 代码如下,求解 - ?
武安清开: **++p 这里的第一个*是乘的意思 第二个*才是取值
白银市17878194509: 求C语言高手,关于指针的?
武安清开: 就是用指针数组输出下面的字符串 #include <stdio.h> #include <conio.h> #include <stdlib.h> int main() { int i; char *string[7]= { "******************", "* 1.add *", "* 2.subtract *", "* 3.multiply *", "* 4.divide *", "* 5.print menu *", "**********...
白银市17878194509: 请高手指教51单片机用C语言修改PC指针? - ?
武安清开: C语言是无法修改PC指针的.就是汇编语言也不能直接读和修改PC指针,都需要借助堆栈操作间接实现.
白银市17878194509: 求C语言中指针的用法 - ?
武安清开: 电脑程序中,不管是什么东西,他都对应有一个地址,而指针的作用是指向这个地址.例如int a=0; a的内容是0,但是在电脑中的内存地址就是其他,假如是2000,那么指针指向的就是这个2000的值.继续刚才的例子int *p;p=&a;这个时候p就指向了a的地址2000,如果想借助p来访问a,就需要在p前面添加上*号,如*p的内容就是0了,也是a的内容.