c语言求助有关指针简单小程序~~~

c语言求助有关指针简单小程序~~~,第1张

测试通过~~~

#include<stdio.h>

swap_(char c,char *p)

{

int fang=0

char *ep=p

while(*ep)

{

if(c==*ep)

{ fang=1 break}

ep++

}

printf("%d",fang)

return fang

}

main()

{

char s[11],i

char ch

printf(" Input in English \n")

scanf("%s",s)

printf("input in ch\n")

getchar()

scanf("%c",&ch)

i=swap_(ch,s)

if(i==1)

printf(" Character exist! \局伏春桐耐n"厅答)

else

printf(" Character not exist! \n")

}

ptr = malloc(10)

ptr = str1

上面这个处理有问题,

你将ptr指向新申请的空间后,

又将它指向了str1这个地址,

这导致了两个问题:

1. 之前分配的malloc(10)这个内存变成了野地址对应的内存

2. free(ptr)这一句变成了释放str1指向内渣余存,str1是一个常量区,进行free *** 作是错误的

ptr = malloc(10)

ptr=str2

这两句也一样

应该如物滚这么改:

#include <stdio.h>

#include <malloc.h>

#include <蚂粗string.h>

int main(void)

{

char *ptr=NULL

char str1[] = "hello"

char str2[] = "wo"

ptr = (char*)malloc(10)

strcpy(ptr,str1)

printf("ptr_len=%d\n",strlen(ptr))

free(ptr)

ptr = NULL

ptr = (char*)malloc(10)

strcpy(ptr,str2)

printf("ptr_len after-free=%d\n",strlen(ptr))

free(ptr)

ptr = NULL

}

===========================================

比如:char *ptr="hello"

如何清除ptr指向的内容呢?

"hello"是常量,不用手动释放,

这里的ptr不用释放的。

#include<stdio.h>

void main ()

{

int i = 0

int t = 0

int ss[10] = {0}

int nMaxIndex = 0

int nMinIndex = 0

// 输入数据数据

printf("请输入10个数,以逗号隔开:\n")

for (i = 0i <10i++)

scanf("%d", &ss[i])

/胡耐/ 记录最大值和最小值的索引

for (i = 1i <10i++)

{

if (ss[i] >ss[nMaxIndex])

nMaxIndex = i

if (ss[i] <ss[nMinIndex])

nMinIndex = i

}

// 交换最大值与数组[0]

t = ss[0]

ss[0] = ss[nMaxIndex]

ss[nMaxIndex] = t

// 交换最小值与数组[9],如果最小值的索引刚好是数组[0],应交换最大值大拍的索引

if (nMinIndex == 0)

nMinIndex = nMaxIndex

t = ss[9]

ss[9] = ss[nMinIndex]

ss[nMinIndex] = t

for (i = 0i <10i++)

printf("%4d", ss[i])

}

// 如果可以调换数组中的其他元素,就直接做个降序排裤仿春列


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12477932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存