My home broadband uses dynamic IP. If it was static, then I could tell an external user what address to use to connect to my server. However, being dynamic, this address can change at the whim of the ISP. The solution to this is to use a dynamic DNS service. This works by my system telling the dynamic DNS service my current IP address, and the external user getting that IP address from the dynamic DNS service.
Some modems have connections to dynamic DNS services built in, which means that when the modem has its IP address changed it can immediately inform the service of its new address. The next best option is to run a script on a server on my network to do a similar task. A great example of a dynamic DNS service which supports the latter is Duck DNS. It's free and very simple to use. You can sign in using an existing account, such as your Google account, and they provide scripts for a large variety of different servers. The end result is an address such as myserver.duckdns.org which always points towards your network. You can even use your own domain if you wish.