一、基础知识
1)32位机器可以寻址0x0~oxFFFFFFFF,即4GB,内存最大可以达到4GB;
2)int main (int argc, char* argv[])
实质上操作系统会调用main主函数,操作系统会将参数agrc 和argv传递给main主函数。argc表示参数的个数,argv存放操作系统传给main的具体参数;
视频中的是int main (int argc, char ** argv)
3)64位系统的ubuntu中,使用gcc编译出32位的应用程序,需要使用gcc -m32 选项,但是输入gcc -m32后会出现“No such file or directory"报错
可使用如下方法解决,增加一个32位机器的函数库:
sudo apt-get update
sudo apt-get purge libc6-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
2)编译成64位的应用程序时,char 为1个字节,int 为4个字节,指针为8个字节;
编译成32位的应用程序时,指针为4个字节;
二、疑问
1)自己的电脑ubuntu 32位的,变量保存位置(大小)与ubuntu变量保存位置(大小)不同;
ubuntu 的系统时间与window的系统时间不对应;
2)定义一个数组ca[x] = {‘A’,‘B’,‘C’,…},定义一个指针 char * pc;,内存分布地址时,可能吧数组的连续地址分给pc地址的上面,也可能是pc地址的下面;
3)字符串指针中特别注意事项
char pc = "abc“;
pc是字符串 “abc”的首地址,取值时的 *pc 中的pc是指向字符串的第一个字母的指针;
pc可以理解为指向字符串的指针, *pc中的pc是指向第一个字符的指针
三、视频中的代码
#include <stdio.h>
int main (int argc, char *argv[])
{
printf("sizeof(char ) =%d\n", sizeof(char ));
printf("sizeof(int ) =%d\n", sizeof(int ));
printf("sizeof(char *) =%d\n", sizeof(char *));
printf("sizeof(char **) =%d\n", sizeof(char **));
return 0;
}