当实参传给形参的时候
形参其实是实参的一份临时拷贝
对形参的修改是不会改变实参的
1、
要求:
交换a,b数据
1、正确的方法:
用取址的方式去找到a,b的地址,然后*pa,*pb进行解引用操作,将a,b内的数据进行调换
void swap2(int *pa, int *pb)
{
int tmp = 0;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("a=%d\tb=%d\n", a, b);
swap2(&a, &b);
printf("a=%d\tb=%d\n", a, b);
return 0;
}
2、错误的方法
void swap1(int x, int y)
{
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("a=%d\tb=%d\n", a,b);
swap1(a, b);
printf("a=%d\tb=%d\n", a, b);
return 0;
}
2、
如何运用内存设置将数组的某些内容进行更替
int main()
{
char arr[] = "hello world";
//arr代表的是指向第一个字符的地址
//&arr[3]则是找到数组arr第三个内容的地址,并由此往后num个数据改为特定的value值。
//memset 内存设置,将一个地址指向的第一个内容往后的num个字符改为特定的value值。
//menset(void *ptr,int value,size_t num)
memset(arr, '*', 5);
printf("%s\n", arr);
memset(&arr[3], '*', 5);
printf("%s\n", arr);
return 0;
}
此处是瞎写的代码,只是试验用的。
从键盘中输入一个字符串并显示出来
int main()
{
char str[100];
scanf("%s", str);
printf("%s\n", str);
return 0;
}