码迷,mamicode.com
首页 > 编程语言 > 详细

C语言之指针

时间:2016-01-16 14:21:17      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

1.指针

 指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值;

 指针的定义格式:

   数据类型 * 变量名称;

  注意:

    1.定义时确定了指针变量的类型,那么该指针就只能保存对应类型变量的地址.

int number = 10;
int *pointer ; //定义了一个int 类型的指针
pointer = &number;//该指针变量存储了number变量的地址,我们就认为pointer指针指向了number

     2.指针只能存放地址.

    3.同一个变量可以有多个指针指向他

int number = 10;
int *pointerOne = &number;
int *pointerTwo = &number;
//有两个指针指向了number变量

     4.指针可以更改指向的变量

int numberOne = 10;
int numberTwo = -1;
int *pointer = &numberOne;//指针指向了numberOne
int *pointer = &numberTwo; //指针指向了numberTwo

     5不能访问野指针(没有指向的指针成为野指针)

2.字符串指针

在C中,字符串有两种形式来存储字符串,1.通过数组来存储. 2.通过指针

两者的区别:  

    1.通过数组存储的字符串,它是一个变量,存储在内存的栈中,可以被修改.

    2.字符串指针,它是一个常量,存储在常量区,不能别修改.

 

3.指针数组

用来存储指针的数组

定义格式: 数据类型 *数组名称[数组长度]

    char *str1 = "aaa";
    char *str2 = "bbb";
    char *str3 = "ccc";
    
    char *array[] = {str1, str2, str3 };
    
    for (int i = 0; i < 3; i ++)
    {
        printf("%s\n",array[i]);
    }

 

4.指向函数的指针

定义格式:返回值类型 (* 指针变量名称) (函数参数列表);

  注意:

    1.函数也会被分配存储空间,函数名保存了函数的地址,与数组类似.

    2.C语言中函数中不能定义函数,所以我们可以利用函数指针在函数内部来调用不同的函数

    

#import <Foundation/Foundation.h>
void upChar(char *charValue);
void lowerChar(char *charValue);
void changeChar(char str[],void (* style)(char *));

int main(int argc, const char * argv[]) {

    //将输入的字符串大写转小写,小写转大写
    //1.提示用户输入
    printf("请输入一段英文");
    char str[100] = {0};
    gets(str); //此方法不安全
    
    changeChar(str,upChar);//大写
    
    changeChar(str, lowerChar);//小写
    
    printf("%s",str);
    
    return 0;
}

//更改字符串
void changeChar(char str[],void (* style)(char *))
{
    char *pointer = str;
    while (*pointer != ‘\0‘)//取出字符串的每个字母
    {
        style(pointer);
        pointer++; //指针内的地址递增,递增单位是数据类型所占字节数
    }
}

//小写
void upChar(char *charValue)
{
    if (*charValue >= ‘a‘ && *charValue <= ‘z‘)
    {
        *charValue = *charValue - (‘a‘ - ‘A‘);
    }
}

//大写
void lowerChar(char *charValue)
{
    if (*charValue >= ‘A‘ && *charValue <= ‘Z‘)
    {
        *charValue = *charValue + (‘a‘ - ‘A‘);
    }
}

 

C语言之指针

标签:

原文地址:http://www.cnblogs.com/kk657483726/p/5135357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!