指针

1.定义一个整形指针:

        int *p;    int * p;

指针:就是一个变量 ,指针的变量类型我们可以看作为int * ----类型名  p--- 变量名

2.指针变量赋值为0

int *p = NULL(数字表示为0)          //指针变量初始化为0;

int a=0;

3.指针变量赋值,也就是改变指针的指向

int a = 100;

int *p = &a;

*p = 100-50;

printf("a = %d\n", a);

 

int main()

{

int b = 10;

int a = 100;

int *p = &a;

*p = 100-30;

p = &b; 

printf("a = %d  *p = %d\n", a, *p);//a = 70  *p = 10

printf("%p %p\n", &b, p);//0xbf967f54 0xbf967f54

return 0;

}

 

 

int main()

{

int *p = NULL, *q = NULL;

int a = 3, b = 4;

int *temp = NULL;

p = &a;

q = &b;

printf("before *p = %d *q = %d", *p, *q);

temp = p;

p = q;

q = temp;

printf("after *p = %d  *q = %d", *p, *q);  //before *p = 3 *q = 4  after *p = 4  *q = 3   a = 3 b = 4

int temp;

temp = *p;  

*p = *q;

*q = temp;

printf("a = %d b = %d", a, b);       //a = 4 b = 3

return 0;

}

*/

 

/*

#include<stdio.h>

int main()

{

int *p = NULL;

int arr[5] = {1,2,3,4,5};

int i;

p = arr;                     

for(i=0;i<5;i++)

{

printf("%d\n", arr[i]);

}

 

for(i=0;i<5;i++)

{

printf("%d\n", *p);

p = p+1;

}

 

printf("%d\n", *p);

printf("%d\n", *(p+1));

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

printf("%p\n", p+1);

printf("\n");

return 0;

}

 

*/

 

/* 1.字符串q

存储一行字符的数组

char arr[5]={'A','B','C','D','E'};

for(i=0; i<5; i++)

{

printf("%c", arr[i]);

}

2.字符串:存储一行字符的数组,然后有个结束标示符\0;

char string[]={'A','B', 'C','\0'};

printf("%s\n", string);      //打印出字符串内容

3.在定义的时候就初始化

char string[]={'A','B', 'C','\0'};

char string[]="ABCD";  

char string[5]={'a','d','c','b','\0'};

4.在定义之后再初始化

char string[20];

for(i=0; i<20;i++)

{   

string[i]=getchar();    //输入一个字符串

gsts(string);           //此操作很危险,因为你输入的字符个数很有可能超过你设定的数组的长度。

}

scanf("%s", string);

gsts(string);           //此操作很危险,因为你输入的字符个数很有可能超过你设定的数组的长度。

5.输出一个字符串

printf("%s", string);

puts(string);

6.字符数组和字符串的区别:

唯一的区别就是字符串有一个结束标识'\0'.定义一个字符数组。看它是不是字符串,就看它有没有结束标识符'\0';

例:

char string[5]={'a','b','c','d','e'};

char string[]="abcde";

通过 sizeof(string);可以求出数组所占空间的大小,因为char 占一个字节,所以可以用sizeof(string)求出大小。

区别2:

在字符数组元素填满的情况下,不要用puts(string);或者printf("%s\n", string);来输出字符数组。因为puts函数

printf的%s方式输出的是字符串,遇到'\0'才结束输出。而我的字符数组在填满的情况中没有'\0',所以输出的时

侯就越界了。

解决办法:定义足够大的数组

char string1[5]={'a','b','c','d','e'};

char string[6]="abcde";

printf("%s\n",string1);

printf("%s\n",string);

puts(string);

区别3:

在字符数组不填满的情况下,我们是可以用puts和printf的%s格式来输出字符数组的。因为这个时候的字符数组相当

于一个字符串。

char string[5]={'a','b','c'};

数组的部分初始化,未初始化的部分为0,而0和'\0'的值是相等的,所以可以用这两种方式输出。

*/

 

/*

int main()

{

char string[5] = {'A', 'B', 'C', 'D', 'E'};

int i;

for(i=0; i<5;i++)

{

printf("%c\n", string[i]);

}

printf("\n");

return 0;

}

*/

/*

int main()

{

char string[20];

int i;

for(i=0; i<20; i++)

{

string[i]=getchar();

}

for(i=0;i<20; i++)

{

printf("%c\n", string[i]);

}

printf("\n");

return 0;

}

*/

/*

int main()

{

int i;

char string[5];

//char string[] = {'A', 'B', 'C', 'D', 'E','\0'};

for(i=0; i<5; i++)

{

string[i]=getchar();

}

printf("%s\n", string);     //ABCDE

    puts(string);               //ABCDE     

printf("%d\n", sizeof(string));

return 0;

}     

*/

 

/*

int main()

{

char string[]={'a','b','c','d','e'};         //数组

char string1[]="abcde";                      //字符串

 

printf("%s\n",string);

printf("%s\n",string1);

puts(string);           //输出字符串,同printf,比printf多了自动换行

puts(string1);

printf("string = %d string1 = %d\n", sizeof(string),sizeof(string1));

//abcdeabcde

//abcde

 

}

*/

/*

#include<string.h>

int main()

{

int i;

char name[20] = "douyajuan";

char string[20] = "hello";

int len;

//scanf("%s",string);

strcpy(name,string);     //替换string的内容到name

len = strlen(name);      //求字符串长度

printf("len = %d\n", len);

for(i=0;i<20;i++)

{

putchar(name[i]);

}

printf("\n");

printf("string=%s\n", string);

return 0;

}

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值