c语言设计——指针

c语言设计——指针,第1张

先给你解释一下指针变量和指针,还有指针变量指向的变量的分别意思。

指针变量的值是指针,指针就是地址;指针变量指向的变量就不是地址了,而是一个具体的变量。

printf("%d",p);}

在这里,定义了指针变量p,指针变量p又被赋予了a的地址,此时a的地址就是指针变量p的值;而p就是指针变量指向的变量,此处是整型变量,由于p被赋予的是a的地址,所以说这个变量就是a,即p=a接着因为a被赋予了5,也就是p就是为5

这样你就可以理解n=0是什么意思了,也就是n是一个指针变量,这个指针变量指向的变量是一个整型变量,n就是一个整型变量,n这个整型变量被赋值为0;

然后是你的第二个问题:n++,因为和++是同优先级,并且是自右向左运算(你查下书的附录可知),所以说,相当于(n++),意思是取了n这个值之后,再n++,即往下一个地址去,然后接着取这个地址的值;再n++一直往下取。

而(n)++呢,就是先取了n这个值之后,然后再把n这个值自增1

如果不明白,建议多看几遍书哦!

函数和调用的例子如下。适用于 数组 a[n][n], 和 s[n] 的情况。

#include <stdioh>

void fun(int a, int s, int n){

int i,j,k;

k=nn;

for (j=0;j<n;j++){

s[j]= (a+jn);

for (i=0;i<n;i++)

if ((a+jn + i) > s[j]) s[j]= (a+jn + i);

}

}

int main ( )

{

int a[5][5],s[5];

int i,j;

for (j=0;j<5;j++) for (i=0;i<5;i++) a[j][i]=j10+i;

fun( &a[0][0], s,5);

for (i=0;i<5;i++) printf("%d ",s[i]);

return 0;

}

C语言 形式逻辑不成立(C语言的缺点!)。

int a[ 10] ,p=a; 是声明,声明中 p=a 表示p是指针,初始化把a数组的首地址赋给它。

p=a;是语句,不是声明,形式一样,就不行了!

因为 语句 里,p 表示p 指向的 值。

同样的形式,意思不同,形式逻辑不成立,(C语言的缺点!)。

初学者,人人遇到这个问题!

#include<stdioh>

void input(int p,int num)

{

// int a[10]; 不能在子函数中再定义了,要用形参对应的实参, 子函数中定义的是局部变量,函数完成时,变量就释放了。

// for(p=a;p<a+10;p++)

int i;

for(i=0;i<num;i++)

scanf("%d",p+i);

}

void sort(int p,int num)

{

// int a[10]; 同前

int i,j,temp;

// for(p=a;p<a+10;p++)

for(i=0;i<num;i++) //数组下标从0开始

{

for(j=i+1;j<num;j++)

if(p[i]<p[j])

{

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

}

void output(int p,int num)

{

//int a[10]; 同前

// for(p=a;p<a+10;p++)

int i;

for(i=0;i<num;i++)

printf("%d ",(p+i));

}

int main()

   int a[10]; 

   input(a,10); 

   sort(a,10); 

   output(a,10); 

   return 0;

}

#include<stdioh>

struct student

{

char name[10];

float math;

float english;

float c;

};

void main(int arbc, char argv[])

{

struct student stu[10], ss = stu;

int i;

float sum[10] = {0}, aver[10] = {0};

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

{

printf("please input student name: \n");

scanf("%s", ss->name);

printf("please input student score of math: \n");

scanf("%f", &(ss->math));

printf("please input student score of english \n");

scanf("%f", &(ss->english));

printf("please input student score of c: \n");

scanf("%f", &(ss->c));

sum[i] += ss->math + ss->english + ss->c;

aver[i] = sum[i] / 3;

ss++;

}

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

{

printf("student[%d]: %s\tsum of score: %f, average: %f\n", i, stu[i]name, sum[i], aver[i]);

}

}

以上就是关于c语言设计——指针全部的内容,包括:c语言设计——指针、C语言用指针编写程序、C语言程序设计 指针变量赋值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9318122.html

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

发表评论

登录后才能评论

评论列表(0条)

保存