View pass_by_reference.c
void foo(int *x) {
*x = 2; // x的地址作为参数被传递,x的地址是pass by value,在foo的stack里被复制了一份,然后我们修改对应地址的值。
}
int main() {
int x = 1;
foo(&x);
printf("x: %d\n", x);
}
View pass_by_value.c
void foo(int x) {
x = 2;
}
int main() {
int x = 1;
foo(x);
printf("x: %d\n", x);
}
View 1.c
#include <stdio.h>
int foo(void *addr, void *ptr) {
ptr = addr; // 无效,因为ptr是作为value被传递进来,在foo内部的stack上被复制了,只是在foo里面修改了,外面看不到。
}
int main() {
int x = 42;
int y = 66;
View 2.c
#include <stdio.h>
int foo(void *addr, void **ptr) {
*ptr = addr;
}
int main() {
int x = 42;
int y = 66;
View foo.c
#include <stdio.h>
void my_int_func(int x)
{
printf( "%d\n", x );
}
int main()
{
void (*foo)(int);
View list.c
#include <stdlib.h> // malloc和free函数定义在这个library里。
#include <stdio.h> // printf函数定义在这个地址里。
struct _listADT {
int size; // list的大小
int *data; // list数据的实际内存位置,是一块连续的内存空间。
int *head; // list的数据的起始位置
// 函数的指针,指向add()方法的实际实现。
// 因为C语言没有class的概念,没法把对list的方法和数据都封装到一个class里面,
// 所以就通过在struct里面定义函数指针的方式来实现一个类似class的形式。
View dog.py
class Dog2:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
dogX = Dog2("Yanan")
dogY = Dog2("Anan")
View dog.py
class Dog2:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
dogX = Dog2("Yanan")
dogY = Dog2("Anan")
View restaurant.py
class Restaurant():
def __init__(self, my_name, my_type):
self.my_name = my_name
self.my_type = my_type
def desc(self):
print("Name: " + self.my_name + " Type: " + self.my_type)
my_restaurant = Restaurant("Mars", "Huge")
my_restaurant.desc()
View dog.py
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + " is now sitting")
def roll_over(self):
print(self.name.title() + " is now rolling over")