几个小程序 O(∩_∩)O~
来源:互联网 发布:买二手物品的软件 编辑:程序博客网 时间:2024/05/21 09:09
1,
#include<iostream>
using namespace std;int main()
{
char*s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
return 0;
}
输出为AAA 第二个不能输出 因为s是指向字符串的指针,不能被赋值。若是想赋值可以改成如下:
#include<iostream>
using namespace std;
int main()
{
char a[]="AAA";
char*s=a;
printf("%s",s);
a[0]='B';
printf("%s",s);
return 0;
}
2,
#include<iostream>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
int*ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
eturn 0;
}
结果2,5
a既是数据名,又是指向数组第一个元素的指针,a+1
sizeof(a)=20, 此时a的类型为int[5]数组。
sizeof(*a)=4,因为有取值符*,表示把a当成一个指针(int*),而a指向数组的首地址,*(a+1)=*(&a[1])=a[1]=2。
(&a+1)先取变量a的地址,并根据a的地址获得下一个与a同类型的相邻地址。根据前面所说的a的类型为int[5]数组。
&a+1=&a+sizeof(5*int),因此&a+1指向的地址为&a[5](数组a[5]的下一个地址)。
ptr指向&a[5],并且ptr是一个int类型的指针,(ptr-1)的值即为a[4]=5。
3,strlen()函数
#include<iostream>
#include<string>
using namespace std;
#include <assert.h>
int main()
{ int strlen1(const char *str);
char a[]="wommm";
int t;
t=strlen1(a);
printf("str is %d\n",t);
return 0;
}
int strlen1(const char *str)
{
int len=0;
assert(str!=NULL);//断定地址为非空
while(*str!='\0')
{
len++;
str++;
}
return len;
}
- 几个小程序 O(∩_∩)O~
- O(∩_∩)O~
- o(∩_∩)o...
- O(∩_∩)O~
- O(∩_∩)O~
- O(∩_∩)O~
- O(∩_∩)O~
- O(∩_∩)O
- O(∩_∩)O~
- O(∩_∩)O~
- O(∩_∩)O~
- 发帖完毕,o(∩_∩)o
- QQ纪念o(∩_∩)o...
- O(∩_∩)O谢谢
- O(∩_∩)O哈哈~
- o(∩_∩)o...哈哈
- 开心O(∩_∩)O~~
- 跨越访问O(∩_∩)O~
- iOS开发- 音频截取
- 学生信息管理系统——问题调试
- 使用NPOI创建Excel
- 近期的感悟
- 【linux/c/c++】linux 的服务器环境安装支持c/c++等操作
- 几个小程序 O(∩_∩)O~
- Android视图交换容器工具,开发者福利!
- 理解HTTP幂等性
- Android Studio - no debuggable applications 的解决办法
- poj1945 Power Hungry Cows BFS
- C#中使用DirectSound录音
- 乱七八糟windows
- 安装eclipse时jdk、ADT、sdk的配置问题解决办法
- js/javascript获取事件源 初始事件