static 宏函数 指针

static的两个要点:1、修饰全局变量时,改变变量的作用域,不能被其他文件调用这能被当前文件调用;2修饰局部变量时可以改变变量周期,知道程序结束时才释放栈空间,被static修饰的局部变量存放在静态数据区。

printf()这个函数用的时候最好都加上\n换行,因为\n不仅有换行的作用,还有刷新缓冲区的作用;或者用完之后用fflush(stdout)函数。

头文件中#include<stdio.h>与#include"stdio.h"的区别,前者是由tc指定目录去寻找,而后者只寻找当前目录。

宏函数的定义方式:#define out  printf("hello\n")   关于 宏定义函数与普通函数的优缺点如下:

宏函数优点:不占用空间;缺点:编译时间长;没有语法检查,不安全。

自定义函数:优点:有语法检查;缺点:占空间主要表现在自定义函数需要给形参分配地址空间。

指针:所有的指针都占用4个字节的地址空间,只不过不同类型的指针他们每次访问移动的地址不同;*p++ 是先取指针里面的内容然后对指针进行加一,不同于(*p)++是对里面的内容进行加一操作;

定义指针时不能 int *p;即不能定义野指针,必须要给他们指向一个地址或者给他们分配空间比如:int *p; p = (int*)malloc(sizeof(char)*32);意思是给这个指针分配了32个字节的空间;用malloc()函数时,需要加上一个头文件#include<stdlib.h>

*(a+i) = a[i];

还有指针数组如 char *str[] = {"helloworld!", "welcome to our home"};  其中每个元素指针指向每个字符串的首地址,如果要打印可以按元素来打印;

今天的编程题:该题目的是通过指针来设计一个能复制字符串的函数;让指针取内容依次传递达到最终复制的作用。有几个注意的点①循环时要利用字符串末尾都是\0设置循环条件;要想有返回值应当设置一个指针去获取原本字符指针的地址;

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 char mystrcpy (char *str, char *ptr)
  5 {
  6     int i;
  7     char *tmp = str;
  8     for(i = 0; *str != '\0'; i++)
  9     {
 10         *str = *ptr;
 11         ptr++;
 12         str++;
 13     }
 14 
 15     return *tmp;
 16 }
 17 int main()
 18 {
 19     char  str[20] = "helloworld";
 20     char ptr[20] = "world";
 21     *str =  mystrcpy(str,ptr);
 22     printf("str = %s\n",str);
 35     return 0;
 36 
 37 }

第二题:自行设计一个函数要求实现字符串翻转的功能,代码如下:需要注意的一点是利用strlen()来计算字符串的长度减少循环长度。

  5 void string_revese(char*str,char*ptr)
  6 {
  7     int len, i;
  8    len =  strlen(str);
  9    for(i = 0; i < len;i++)
 10    {
 11         *ptr = *(str + len - 1 - i);
 12         ptr++;
 13    }
 14 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值