通过指针在函数里改变数组的值

关键:将数组的地址送到函数中;其中数组名可以作为函数的首地址。

#include<stdio.h>
int sort(int *p,int n)
{
 int i,j,ret=0,temp;
    if(p==NULL)
 {
printf("error:sort(int *p)%d",ret);
 return ret;
 }
    for(i=0;i<n-1;i++)
 {
   for(j=i+1;j<n;j++)
  if(*(p+i)>*(p+j))
  {
  temp=*(p+i);
  *(p+i)=*(p+j);
  *(p+j)=temp;
  }
 }
 return 1;
}
int main()
{
  int a[20],i,n;
  int *m=a;
  scanf("%d",&n);
  for(i=0;i<n;i++)
   scanf("%d",&a[i]);
  sort(m,n);//sort(a,n)将数组名送到函数中当形参也是可以的
    for(i=0;i<n;i++)
   printf("%d ",a[i]);
}

时间: 2024-11-03 02:05:26

通过指针在函数里改变数组的值的相关文章

10. 改变数组元素值的函数

题目: 编写一个模板函数 iota , 使 a[i] += value .测试你的代码. 思路: 正常思路即可,但是我不懂这个函数名字意义是什么. 注:本题目原书翻译有错,本人已修改正确.否则题目的意义不明. 代码: 1 #include <iostream> 2 using namespace std; 3 4 template <typename T> 5 void iota (T* a, int size, const T& value) { 6 for (int i

关于【指针作为形参,改变实参的值】的理解!

0x01 先上代码: 1 #include <stdio.h> 2 3 void swap(int *p, int *q) 4 { 5 int temp; 6 temp = *p; 7 *p = *q; 8 *q = temp; 9 } 10 11 int main() 12 { 13 int a, b; 14 int *pa, *pb; 15 printf("Enter 2 numbers:\n"); 16 scanf("%d, %d", &a

php中用foreach改变数组的值的问题

翻到PHP文档的foreach那页这样写道: “foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息.有两种语法: foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement 第一种格式遍历给定的 array_expression 数组.每次循环中,当

Perl 改变数组元素值的方法

用for循环对每个数组元素重新赋值: #!/usr/bin/perl @array = (1..30); print "@array\n"; for($i=0; $i<=$#array; $i++){ $array[$i] = $array[$i] + 10; } print "@array\n"; 用while循环对每个数组元素重新赋值: #!/usr/bin/perl @array = (1..30); $count = 1; print @array;

c语言中可以在函数内改变全局变量的值

实例代码如下: 1 #include<stdio.h> 2 int global_value=9; 3 void change(void) 4 { 5 global_value=8; 6 } 7 void main() 8 { 9 printf("before: global_value=%d",global_value ); 10 printf("\n"); 11 change(); 12 printf("after: global_valu

函数指针,函数指针数组,函数返回值为函数指针

函数的名字就是函数的首地址:定义函数指针; int (*p)(int ) p为函数指针变量名字,int 为函数的返回值类型为int型:(int)为函数的形参类型为int型, 注:因为优先级所以要用(*p),否则就会p先和后面的()结合为int*p(int),意思就变为p(int)函数的返回值为int* 注:main2()函数中   int (*p[])(int ,int )  为一维数组,下面写错了, #include<stdio.h> #include<stdlib.h> int

数组和指针作为函数参数——高质量C、C++编程指南

本文内容出自<高质量C.C++编程指南>.阅读之后理解,然后通过自己的话和例子讲清楚,这样才是学习之道.以下内容都是自己所认为的东西,如果哪里错了,希望各位大神指出. 1.数组作为函数的参数进行传递时,该数组自动退化为同类型的指针 结果: 第一张图中,str为数组,此时的长度为6,而作为函数参数时退化为指针了,指针的长度固定为4. 第一张图中,str为数组,所以不能对str进行自增或自减,而在函数中是可以的,因为退化为指针了,而指针时可以进行自增自减的. 2.指针参数是如何传递内存的 传递方式

C++——指针---指向数组的指针---指向字符串的指针--指向函数的指针--指针的指针--指针的引用

一.指向数组的指针 代码示例1: 1 int main() 2 { 3 int a[10]={0,2,4,6,8,10,12,14,16,18}; 4 int *p; 5 for(p=&a[0];p<&a[0]+10;p++) 6 printf("%d ",*p); 7 } 代码示例2: int a[10]={0,2,4,6,8,10,12,14,16,18}; int *p; p=a; printf("%d\n",*(a+5));//注意加括

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type