1.指针
1.&取得变量地址

%p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。
32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。
所以,在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0。
%x:无符号十六进制整数(字母小写,不像上面指针地址那样补零)
%X:无符号十六进制整数(字母大写,不像上面指针那样补零)
%x、%X和%p的相同点都是16进制,不同点是%p按编译器位数长短(32位/64位)输出地址,不够的补零
————————————————
版权声明:本文为优快云博主「Young__Fan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Young__Fan/article/details/90609247
#include<stdio.h>
int main()
{
int i = 6;
int x = 0;
x = (int)&i;
printf("sizeof(int)=%lu\n", sizeof(int));
printf("sizeof(int)=%lu\n", sizeof(i));
printf("sizeof(double)=%lu\n", sizeof(double));
printf("%p", &i);
return 0;
}
#include<stdio.h>
int main()
{
int a[10];
printf("%p\n", &a);
printf("%p\n", a);
printf("%p\n", &a[0]);
printf("%p\n", &a[1]);
return 0;
}






#include<stdio.h>
void f(int* p);
void g(int k);
int main()
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int* p)
{
printf("*p=%d\n", *p);
printf("p=%p\n", p);
*p = 26;
}
void g(int k)
{
printf("%d", k);
}

#include<stdio.h>
void f(int* p);
void g(int k);
int main()
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int* p)
{
printf("*p=%d\n", *p);
printf("p=%p\n", p);
*p = 26;
}
void g(int k)
{
printf("%d", k);
}





2.字符类型
#include <stdio.h>
int main()
{
char c;
char d;
c = 1;
d = '1';
if (c == d) {
printf("相等\n");
}
else {
printf("不相等\n");
}
printf("%d\n",c);
printf("%d\n",d);
return 0;
}









\n被shell默认为回车和换行两个动作
3.字符串












#include<stdio.h>
int main()
{
int i = 0;
char* s = "hello";
char s1[] = "hello";
s1[0] = 'B';
printf("&i=%p\n", &i);
printf("s=%p\n", s);
printf("s=%c", s1[0]);
return 0;
}
4.字符串计算








字符串函数













