C语言指针程序

Python023

C语言指针程序,第1张

#include<stdio.h>

#include<string.h>

char

*fun(char

*s,char

*t)//函数功能是在字符串S中找字符串T

{

char

*p,*r,*a

a=NULL//是一个标志,开始没查找到

//开始s=&s[0]

while(*s)//从S

的第一个字符开始查找,直到遇到'\0'

{

p=s

r=t

while(*r)//从T

的第一个字符开始查找,直到遇到'\0'

if(*r==*p)//如果在S字符串中找到了第一个

T字符串的T[0],

{

r++//在比较T[1]

t[2]....

p++//同上

}

else

break

if

(*r=='\0')

a=s//表明查找到了

s++

}

return

a//返回NULL没到到,否则找到了

}

main()

{

char

s[100],t[100],*p

printf("\n

please

enter

string

S:")

scanf("%s",&s)

printf("\n

please

enter

string

T:")

scanf("%s",&t)

p=fun(s,t)

if(p)//真,为找到了

printf("\n

the

result

is

:%s\n",p)

else

printf("\n

not

found!\n")

}

#include<stdio.h>

#define N 5

#define M 5

void f(int a[][M],int n,int m,int *s) { int i,j

  for ( i=0i<ni++,s++ ) {

    *s=a[i][0] for ( j=1j<mj++ ) if ( *s<a[i][j] ) *s=a[i][j]

  }

}

void main() { int a[N][M],s[N],i,j

  for ( i=0i<Ni++ ) for ( j=0j<Mj++ ) scanf("%d",&a[i][j])

  f(a,N,M,s)

  for ( i=0i<Ni++ ) printf("%d\n",s[i])

}

变量前面加&代表取出这个变量的地址,&又叫取址符

指针前面加*代表取出,指针所指向的内存里的数据(值),*又叫取值符

p是指针,n是变量

计算机解析代码是从右到左,所以

*&n = *(&n)

&n代表取出n在内存中的地址,取址

*&n,就是对&n在取值

*&n和n是等价的

所以下面的都是等价的

*p = *&n

*p = n

p = &n

就好比小明住在番茄花园

小明家的地址就是番茄花园

番茄花园里的值就是小明

n代表小明,

&n就是小明的家(番茄花园)

*&n就好比问小明的家里住着谁,答案依然是小明

就好比我老婆的老公还是我。

再来理解一下*p

p是一个指针,p就是一个地址

p就是番茄花园

*p就是再问,番茄花园里住着谁

就好比有一个人叫小壮的,想找小明聚聚,但是不知道小明家的地址,他就找来和小明最要好的朋友小强,通过小强的他给了你一个字条,上面写着小明的地址,这张字条就是指针,指针就是一个记录地址东东,如果哪天小明搬家了,这张字条也就作废了,所以指针指向的是一个内存地址,如果这个地址被释放了,这个指针也就作废了,因为指针就是一张带着地址的纸。