C语言指针与字符串,指针与数组,const修饰符

来源:互联网 发布:nginx 修改root路径 编辑:程序博客网 时间:2024/04/28 15:53
//  01-指针与字符串
#include <stdio.h>
/*
  1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符
     当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的没有字符都放到字符数组里面
  2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符
*/
int main()
{
  //  1、使用字符数组
    char names[] = "frjj";
    names[0] = 's';
    names[1] = 'x';
    printf("%s\n",names);
    printf("names = %p\n",names);
    //  2、使用指针变量
    
    const char *name = "frjj";

    printf("name = %p\n",name);


    int test()
{
//  1、const修饰普通变量,在定义普通变量的时候,在普通变量名称前面加上const说明这个变量是只读的
     const int a = 10;
    int const b = 20;

//  2、const修饰指针变量
//       1、如果const在*前面的,说明指针所指向的存储空间的是只读的,我们不可以修改指针所指向的存储空间
    int c = 10;
//    const int *p = &c;
    int const *p = &c;
//       2、如果const在*后面的说明,这个指针变量本身是只读的,那么就不可以修改这个指针的指向
    
    int * const pp = &c;

    return 0;

}

int test1()
{
// 指向数组的指针:它是一个指针,这个指针用来指向数组的
    
    int nums[3][3] = {{1,3,5},{2,4,8},{11,1,2}};
    
    int ns[] = {1,2};

//  怎么定义一个指向数组的指针
//  1、定义一个这样的数组
//  2、给数组名加上一个括号
//  3、在数组名称前面加上一个*  

     int (*np)[3];
    np = nums;
//  1、它可以使用二维数组访问里面元素的方式去访问
    printf("%d\n",np[1][2]);
//  2、通过指针的方式
    printf("%d\n",*(*(np+1)+2));
     return 0;
}


void test()
{
    //  指针数组:存放指针数组
    int nums[5];
    int a =10;
    int b = 20;
    int c = 30;
    int *numsp[3] = {&a,&b,&c};
    int len = sizeof(numsp) / sizeof(int *);
    //    for (int i =0; i < len; i++) {
 
    //        printf("%d\n",(*numsp[i])++);
    //    }
    *numsp[0] = 60;
    printf("a = %d\n",a);
    *numsp[0] =   *numsp[0] + 1;
    (*numsp[0])++;
    printf("a = %d\n",a);
    
}


0 0
原创粉丝点击