C语言(2) - 从指针开始
1,交换两个数:
/*
交换两个数
2009-5-11
by beango
*/
void swap(float *,float *);
int main(void)
{
float x,y;
x = 1.2;
y = 1.3;
swap(&x,&y);
printf("x=%.2f; y=%.2f\n",x,y);
}
void swap(float *a,float *b)
{
float temp = *a;*a=*b;*b = temp;
}
交换两个数
2009-5-11
by beango
*/
void swap(float *,float *);
int main(void)
{
float x,y;
x = 1.2;
y = 1.3;
swap(&x,&y);
printf("x=%.2f; y=%.2f\n",x,y);
}
void swap(float *a,float *b)
{
float temp = *a;*a=*b;*b = temp;
}
只要记住一点的是,这里是传值,不是传址,所以想要改变两个数的位置,当然是要改变它们的地址了,要操作地址当然是用指针了。
2,动态内存分配:
#include <stdio.h>
/*
动态内存分配
*/
int main(void)
{
int size = 10;
int *p = malloc(sizeof(int)*size);
if(!p)
{
printf("memory error!");
return 0;
}
printf("memory address:%d\n",p);
//内存分配好了,但是还没有初始化,开始初始化数据
int k = 0;
while(k<size)
p[k++] = k;//用下标访问
//输出
int i =0;
while(i<size && p!=NULL)//用指针访问,但是要注意边界
printf("[%d]:%d\n",i++,*p++);
free(p);
}
/*
动态内存分配
*/
int main(void)
{
int size = 10;
int *p = malloc(sizeof(int)*size);
if(!p)
{
printf("memory error!");
return 0;
}
printf("memory address:%d\n",p);
//内存分配好了,但是还没有初始化,开始初始化数据
int k = 0;
while(k<size)
p[k++] = k;//用下标访问
//输出
int i =0;
while(i<size && p!=NULL)//用指针访问,但是要注意边界
printf("[%d]:%d\n",i++,*p++);
free(p);
}
3.字符串查找
/*
字符串查找
*/
int find(char **strings,char value)
{
char *string;
while(string=*strings++,*string!='\0')
{
int index = 0;
while(*string++!='\0')
if(index++,*string==value)
return index;
return 0;
}
return 0;
}
int main(void)
{
char *string1 = "abcdefg";
char c = 'q';
char **strings = &string1;
int index = find(strings,c);
if(index==0)
printf("not fond!");
else
printf("'%c' at %d of str:%s",c,index,*strings);
return 0;
}
字符串查找
*/
int find(char **strings,char value)
{
char *string;
while(string=*strings++,*string!='\0')
{
int index = 0;
while(*string++!='\0')
if(index++,*string==value)
return index;
return 0;
}
return 0;
}
int main(void)
{
char *string1 = "abcdefg";
char c = 'q';
char **strings = &string1;
int index = find(strings,c);
if(index==0)
printf("not fond!");
else
printf("'%c' at %d of str:%s",c,index,*strings);
return 0;
}