本文介绍: 而单独的的指针为一个指针的大小,即:64位操作系统中8个字节,32位操作系统中4个字节。数组是一个完整的整体,可以看作一个长指针,a表示数组首元素的地址。注解(图解非常详细)只有p3会正常输出2。
下面,补充上次的程序,1完全使用指针的方法,.实现去掉空格
#include<stdio.h>
#include<stdlib.h>
void delete_word(char* s) {
while (*(s + 1) != '') {
*s = *(s + 1);
s++;
}
*s = ''; // 设置字符串结束符
}
int main() {
char *a = (char *)malloc(128);
char ch;
int i = 0;
while ((ch = getchar()) != EOF) {
*(a + i++) = ch;
}
*(a + i) = ''; // 设置字符串结束符
char* begin = a;
while (*a != '') {
if (*a == ' ') {
delete_word(a);
}
else {
a++;
}
}
printf("%sn", begin);
free(begin); // 释放内存
return 0;
}
2.指针和数组的关系
#include<stdio.h>
int main() {
int a[5] = { 1,2,3,4,5 };
int* b = a;
for (int i = 0; i < 5; i++) {
printf("%d ", *(b + i));
}
printf("n");
return 0;
}
1 2 3 4 5
3.指针和数组的运算关系
#include<stdio.h>
void f(int m[]) {
printf("%dn", sizeof(m) / sizeof(m[0]));
}
int main() {
int m[10] = { 0 };
printf("%dn", sizeof(m) / sizeof(m[0]));
f(m);
return 0;
}
输出的结果:
10
2
注解:
而单独的的指针为一个指针的大小,即:64位操作系统中8个字节,32位操作系统中4个字节
#include<stdio.h>
int main() {
int a[5] = { 1,2,3,4,5 };
int* p1 = (int*)(&a + 1);
int* p2 = (int*)((int)a + 1);
int* p3 = (int*)(a + 1);
printf("%dn%dn%dn", p1[0], p2[0], p3[0]);
return 0;
}
注解(图解非常详细)
输出结果:
只有p3会正常输出2
原文地址:https://blog.csdn.net/T3604220939/article/details/134713037
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_20794.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。